1.需求
需求,查詢文章列表,以及文章列表下的評論。但是每篇文章評論只需要查詢出2條即可(一篇文章可能有幾百個評論)。
2.實現
- 配置關聯模型
//---------------------Article模型的關聯表配置如下----------------------------------
public function comments(){
return $this->hasMany(`ModulesTypeEntitiescomments`, `article_id`, `id`)
->select([`id`,`name`])->limit(2);
//這裡就限制了只查詢2條評論,同時select()也限制只查詢comments的id 和name
}
- 程式碼實現
$articles=Article::all();
//查詢出對應條件的文章
$articles->each(function ($articles) {
$articles->load(`comments`);
});
//對每個文章進行載入對應的評論關聯關係
return $articles;
3.總結
- 主要是使用了each去做迴圈每一條文章,然後對每一條文章使用load()方法去載入Laravel的Model模型配置。注意這裡只能使用load去載入這個comments配置。PS(測試過其他類似於load方法的關聯配置沒有想要的效果)
- 雖然對每篇文章執行了一次查詢,很老套和顯得笨重,但是能實現這個特殊的需求。
4.參考
參考了Laravel官方Github貢獻者,themsaid討論給出的答案issuehttps://github.com/laravel/framework/issues/18014