在Laravel搜索

wiw*_*978 0 laravel eloquent

我有以下查询

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

这将返回包含关键字的当前用户的所有对象.这仅搜索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();
Run Code Online (Sandbox Code Playgroud)

现在,这会返回一个包含关键字的所有对象object_name或object_description,但它搜索整个用户群内.

我想要的是更改此查询,以便我可以在object_name或中搜索关键字object_description,但搜索范围必须限制为当前登录用户.

小智 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();
Run Code Online (Sandbox Code Playgroud)