我在 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
是错误的。 whereOr
是一个动态 where。在 this blogpost 中对它们进行了更深入的描述。
对于动态 wheres,条件不仅由参数定义,而且由方法名称本身定义。这是一个例子:
->whereAge(18);
可以翻译成
->where('age', '=', 18);
这是通过 __call()
函数完成的,该函数随后调用 dynamicWhere()
.然后此方法解码您调用的方法名称并将该信息保存为 where 条件。
现在使用 whereOr
你实际上必须这样调用它:
->whereAgeOrGender(18, 'male');
这意味着它为您提供了简单的语法,但不如“真正的”wheres 灵活。例如,它将始终使用=
运算符。所以它绝对不适合你的情况。
关于php - laravel 中 whereOr 和 orWhere 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27578665/