php – laravel中whereOr和orWhere之间的区别

我在Laravel的代码中使用whereOr和orWhere都可以,但有时会产生不同的结果

$user_query = User::select( 'users.id', 'users.username','users.first_name','users.last_name', 'users.photo' )
                    ->where('users.status',1)
                    ->where('users.id','!=',$id)
                    ->where('users.username','like','%'.$searchkey.'%')
                    ->orWhere('users.first_name','like','%'.$searchkey.'%')
                    ->orwhere('users.last_name','like','%'.$searchkey.'%')->get();

                    // ->whereOr('users.first_name','like','%'.$searchkey.'%')
                    // ->whereOr('users.last_name','like','%'.$searchkey.'%')->get();

whereOr和orWhere之间的区别是什么

最佳答案
他们俩都可以这样做.但不是真的,因为你在哪里使用错误. whereOr是动态的地方.在this blogpost中对它们进行了更深入的描述

对于动态wheres,条件不仅定义参数,还定义方法名称本身.这是一个例子:

->whereAge(18);

它可以被翻译成

->where('age', '=', 18);

这是通过__call()函数完成的,然后调用dynamicWhere().此方法然后解码您调用的方法名称并将该信息保存为where条件.

现在有了whereOr,你实际上必须称之为:

->whereAgeOrGender(18, 'male');

这意味着它为您提供了简单的语法,但却不如“真实”那么灵活.例如,它将始终使用=运算符.所以它绝对不适合你的情况.

转载注明原文:php – laravel中whereOr和orWhere之间的区别 - 代码日志