2017-01-27 16 views
0

のためのN行を選択して、私は、テーブル内の各外部キーの最新の5行を取得しようとしているので、次のデータベース構造を想像している:私のような何かをしたいLaravel QueryBuilder - それぞれの外部キー

CATEGORY (id, name) 
ARTICLE (id, category_id, title) 

をこれは:

Article::where("category_id", 1) 
     -> latest() 
     -> limit(5) 
     -> get(); 

Article::where("category_id", 2) 
     -> latest() 
     -> limit(5) 
     -> get(); 

などです。私はどのようにこれをすべての外部キーの単一のクエリとして行うでしょうか?

ありがとうございます!

答えて

0

:ここ

はどのような関係を作成するドキュメントです。代わりに、怠惰な熱心な読み込みを使用する必要があります。

0

あなたはこれを行うことができます。もちろん

Category::with(['article' => function($q){ 
     $q->orderBy('id', 'desc'); 
     $q->limit(5); 
    })->get(); 

あなたがその機能を使用するためには、あなたのモデルで外部キー関係を作成する必要があります。それは、ネイティブにサポートされていません

https://laracasts.com/discuss/channels/eloquent/extending-eloquents-builder-to-eager-load-collections-w-limits?page=2

:このパーhttps://laravel.com/docs/5.4/eloquent-relationships#one-to-many

+0

正しく動作していないようです。私は私のカテゴリモデルにこれを追加しました: public function articles(){return $ this - > hasMany(Article :: class); } 私は4番目の外部キーのレコードしか取得できません。 – John1984

+0

あなたは 'article()'プロパティを持つすべてのカテゴリを取得する必要があります。 – Buglinjo

+0

は残念ですが、まだ問題があります。私のカテゴリモデルには、どのような関係方法が必要ですか? – John1984

関連する問題