2017-11-30 23 views
0

をモデルを一緒にチェーンだから私は三つのモデルがあります:Laravel雄弁

チャレンジ

ユーザー

エントラント

チャレンジはちょうどその主キー

ユーザーがちょうど

その主キーを持っていました

Entrantには外部キーがありますs challenge_idとuser_id

私はチャレンジから質問しています(私はチャレンジIDを持っています)。そのチャレンジに関連するすべてのユーザーを得るために何が雄弁に最も良い方法ですか?私は基本的にすべての参加者データの集約をすべてのユーザーデータと結合したいと考えています。私はhasManyThroughメソッド(https://laravel.com/docs/5.5/eloquent-relationships)を調べてきましたが、うまく動作しないようです。

+2

...あなたが説得力のモデルのそれぞれの間の適切な関係を設定していることを前提としています。 – user3158900

答えて

0

、あなたが探しているコードです:コードのこの作品の鍵は、各参加者に関連付けられているユーザをeagerly loadswith一部である

Entrant::where('challenge_id', $challengeId)->with('users')->get(); 

。関連するデータをロードするこの方法は、N + 1の問題を解決し、データベースの負荷を軽減します。

このコードでは、これが実際に `entrant`があなたのピボットテーブルになります` belongsToMany`ある

User  hasMany Entrant 
Challenge hasMany Entrant 
Entrant belongsTo User 
Entrant belongsTo Challenge 
+0

すごくおかげさまで、少し余分な説明をいただきありがとうございます。 –