2017-09-01 44 views
0

Laravel童軍:有沒有一種方法,我只在一個特定的領域搜索?Laravel童軍:只在特定領域搜索

目前,這條線是工作的罰款:

$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; 

享受!