2016-01-12 51 views
0

我有一個查詢:如何在使用Eloquent時將':: whereHas()'作爲':: with()'查詢的約束條件?

Posts::whereHas('comments', function($query){ 
      $query->where('name', 'like', 'asd'); 
     })->with('comments')->get(); 

它返回一個具有有名字像這些職位的所有意見「ASD」評論的所有訊息。我可以在':: hasHas'中爲'with'方法使用上面的約束,所以它不會返回所有註釋,但只會返回符合需求的註釋嗎?或者我必須重複查詢?

回答

3

您可以創建查詢這樣的事情,幾乎沒有重複的:)

$callback = function($query) { 
    $query->where('name', 'like', 'asd'); 
} 
Posts::whereHas('comments', $callback)->with(['comments' => $callback])->get(); 

或者,你可以像在這個帖子Laravel - is there a way to combine whereHas and with