我有以下查询
$objects = Object::where('user_id', auth()->user()->id)
->where('object_name','LIKE','%'.$request->search."%")
->get();
这将返回包含关键字的当前用户的所有对象。这只会在object_name
列中搜索关键字。
由于我想同时在object_name
和object_description
中进行搜索,因此添加了一个orWhere
子句,如下所示:
$objects = Object::where('user_id', auth()->user()->id)
->where('object_name','LIKE','%'.$request->search."%")
->orWhere('object_description','LIKE','%'.$request->search."%")
->get();
现在,此操作返回所有包含object_name
或object_description
中的关键字的对象,但它会在整个用户群中搜索。。
我想要更改此查询,以便可以在object_name
或object_description
中搜索关键字,但是搜索范围必须限于当前登录的用户。
答案 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();