laravel with 查詢列表限制條數

玫翠慧發表於2019-02-16

1.需求

需求,查詢文章列表,以及文章列表下的評論。但是每篇文章評論只需要查詢出2條即可(一篇文章可能有幾百個評論)。

2.實現

  1. 配置關聯模型
//---------------------Article模型的關聯表配置如下----------------------------------
public function comments(){
        return $this->hasMany(`ModulesTypeEntitiescomments`, `article_id`, `id`)
        ->select([`id`,`name`])->limit(2);
        //這裡就限制了只查詢2條評論,同時select()也限制只查詢comments的id 和name
        }
  1. 程式碼實現
$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
Laravel貢獻者給出的答案

相關文章