2017-03-08 73 views
0

如何向上添加約束has()方法上的口才?雄辯 - 具有()約束

比方說,它想要檢索所有包含約翰至少3條評論的帖子。我怎樣才能做到這一點 ?預計代碼的

非工作示例:

$posts = Post::has('comments', '>=', 3)->where('author', 'John')->get(); 

我也可以達到同樣的結果的另一種方式(不使用有())?

+0

你問如何添加約束有(),或者該怎麼做了同樣的事情()不會,但沒有使用它? – sisve

+0

如果可能,用has()約束。如果不可能,同樣的事情沒有has()。 – Ruben

回答

0

沒有測試過這一點,但可以工作:

Post::whereHas('comments', function($q){ 
    $q->whereAuthor('John') 
     ->groupBy('post_id') 
     ->havingRaw('count(`comments`.`post_id`) >= 3') 
})->get(); 
+0

從mySql獲取此錯誤 - 語法錯誤或訪問衝突:1055表達式 – Ruben

+0

在數據庫配置上,將mysql嚴格更改爲false,並且它工作正常 – Ruben