【问题标题】:How to use where clause on data which is eager loaded in laravel 5?如何在 laravel 5 中急切加载的数据上使用 where 子句?
【发布时间】:2018-06-10 23:10:02
【问题描述】:

我只想根据在搜索框中输入的搜索词显示管理员用户

我先存储关键字

$keyword = $request->get('search');

然后

$users = User::with('admin')->where('role', 'super_admin')
                    ->where(function ($query) use($keyword){
                        $query->where('id', 'LIKE', "%$keyword%")
                        ->orWhere('name', 'LIKE', "%$keyword%");
            })->paginate($perPage);

这就像我从 user 表的主表中搜索术语

但我也想使用管理表列来过滤它

$users = User::with('admin')->where('role', 'super_admin')
                    ->where(function ($query) use($keyword){
                        $query->where('id', 'LIKE', "%$keyword%")
                        ->orWhere('email', 'LIKE', "%$keyword%")
                        ->orWhere('name', 'LIKE', "%$keyword%")
                        ->orWhere($this->admin->status, 'LIKE', "%$keyword%");
            })->paginate($perPage);

这会引发错误undefined property admin

由于这条线->orWhere($this->admin->status, 'LIKE', "%$keyword%");

那么如何在过滤数据时使用管理列

【问题讨论】:

    标签: php laravel-5 eloquent eager-loading laravel-query-builder


    【解决方案1】:

    预加载示例

        $users = User::with([
            'admin' => function($query) use($keyword) {
                 $query->where('status', 'LIKE', "%$keyword%")
            }
        ])
        ->where('role', 'super_admin')
        ->where(function ($query) use($keyword){
                        $query->where('id', 'LIKE', "%$keyword%")
                        ->orWhere('email', 'LIKE', "%$keyword%")
                        ->orWhere('name', 'LIKE', "%$keyword%")
        })->paginate($perPage);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-12
      • 2016-06-14
      • 2019-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-16
      • 2020-03-08
      相关资源
      最近更新 更多