Laravel Scout:有没有一种方法可以只搜索特定的字段?
目前这条线工作正常:
$es = Element::search($q)->get();
Run Code Online (Sandbox Code Playgroud)
但它搜索标题,短描述和描述字段.我需要它只搜索标题字段.
Ren*_*lho 11
您只需要toSearchableArray通过添加如下代码来更改模型中的方法:
/**
* Get the indexable data array for the model.
*
* @return array
*/
public function toSearchableArray()
{
$array = $this->only('title', 'description');
$related = $this->user->only('name', 'email');
// Customize array...
return array_merge($array, $related);
}
Run Code Online (Sandbox Code Playgroud)
然后调用php artisan scout:import App\YourModel重新索引新记录.
注意:
$this->only('title', 'description') 将仅搜索其标题和说明字段$this->user->only('name', 'email') 还将从相关模型中搜索其名称和电子邮件因此,您可以通过添加->load('user')搜索方法来检索相关数据,如下面的代码:
public function search(Request $request)
{
$query = $request->get('q');
return Task::search($query)->get()->load('user');
}
Run Code Online (Sandbox Code Playgroud)
如果您尝试使用 - > paginate()方法检索数据,则必须单独加载关系:
...
$tasks = Task::search($query)->paginate($request->get('per_page'));
$tasks->load('user');
return $tasks;
Run Code Online (Sandbox Code Playgroud)
请享用!
| 归档时间: |
|
| 查看次数: |
2405 次 |
| 最近记录: |