0
Laravel童軍:有沒有一種方法,我只在一個特定的領域搜索?Laravel童軍:只在特定領域搜索
目前,這條線是工作的罰款:
$es = Element::search($q)->get();
但它搜索冠軍,SHORTDESCRIPTION和描述領域。我需要它只搜索標題字段。
Laravel童軍:有沒有一種方法,我只在一個特定的領域搜索?Laravel童軍:只在特定領域搜索
目前,這條線是工作的罰款:
$es = Element::search($q)->get();
但它搜索冠軍,SHORTDESCRIPTION和描述領域。我需要它只搜索標題字段。
你只需要通過添加類似下面的代碼模型更改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);
}
然後調用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');
}
如果你想檢索使用數據 - > PAGINATE()方法,必須需要單獨加載關係:
...
$tasks = Task::search($query)->paginate($request->get('per_page'));
$tasks->load('user');
return $tasks;
享受!