在Laravel中搜索

时间:2018-10-30 09:26:28

标签: laravel eloquent

我有以下查询

$objects = Object::where('user_id', auth()->user()->id)
                ->where('object_name','LIKE','%'.$request->search."%")
                ->get();

这将返回包含关键字的当前用户的所有对象。这只会在object_name列中搜索关键字。

由于我想同时在object_nameobject_description中进行搜索,因此添加了一个orWhere子句,如下所示:

 $objects = Object::where('user_id', auth()->user()->id)
            ->where('object_name','LIKE','%'.$request->search."%")
            ->orWhere('object_description','LIKE','%'.$request->search."%")
            ->get();

现在,此操作返回所有包含object_nameobject_description中的关键字的对象,但它会在整个用户群中搜索

我想要更改此查询,以便可以在object_nameobject_description中搜索关键字,但是搜索范围必须限于当前登录的用户。

1 个答案:

答案 0 :(得分:7)

您应该像这样更改查询

$search = $request->search;
$objects = Object::where('user_id', auth()->user()->id)
    ->where(function($query) use ($search) {
         $query->where('object_name','LIKE',"%{$search}%")
             ->orWhere('object_description','LIKE',"%{$search}%");
      })
    ->get();