0
Laravel Scout:特定のフィールドのみを検索する方法はありますか?Laravel Scout:特定のフィールドのみを検索
現時点では、この行が正常に動作している:
$es = Element::search($q)->get();
をしかし、それは、タイトル、shortdescriptionと説明フィールドを検索します。 タイトルフィールドのみで検索する必要があります。
Laravel Scout:特定のフィールドのみを検索する方法はありますか?Laravel Scout:特定のフィールドのみを検索
現時点では、この行が正常に動作している:
$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;
をお楽しみください!