2017-09-01 18 views
0

Laravel Scout:特定のフィールドのみを検索する方法はありますか?Laravel Scout:特定のフィールドのみを検索

現時点では、この行が正常に動作している:

$es = Element::search($q)->get(); 

をしかし、それは、タイトルshortdescription説明フィールドを検索します。 タイトルフィールドのみで検索する必要があります。

答えて

3

あなたは、次のコードのように追加して、モデルからあなたの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'); 
} 

UPDATE

あなたが使用してデータを取得しようとしている場合は - >のpaginate()メソッドを、あなたは別に関係をロードする必要がありますする必要があります。

... 
$tasks = Task::search($query)->paginate($request->get('per_page')); 

$tasks->load('user'); 

return $tasks; 

をお楽しみください!

関連する問題