php - laravel 中 whereOr 和 orWhere 的区别

标签 php laravel eloquent query-builder

我在 Laravel 的代码中使用了 whereOrorWhere 两者都有效,但有时会给出不同的结果

$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();

whereOrorWhere 有什么区别

最佳答案

他们都可以做同样的事情。但并非如此,因为您使用的 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/

相关文章:

php - 按元框值从数据库中获取数据(wordpress)

Laravel 迁移创建用户 "unexpected ' use' (T_USE)"SQLite

php - Laravel,多个 belongsto 和自动插入 ID?

laravel - 使用 Eloquent 更新多个记录(Laravel 5.4)

php while循环进入问题

php - Jquery - .click 未在提交按钮上触发

php - 在 Zend Framework 中转义字段名称中的点

php - Laravel:如果用户在路由中手动输入ID,如何抛出403?

php - 对 Laravel 中的所有请求进行全局验证

php - 在 Laravel 中迁移外键与 Eloquent 关系