2017-06-23 7 views
0

私はUserLeagueおよびSubmissionの3つのモデルを持っています。私はすべてleaguesを照会しようとしていますusersubmissionsを持っていました。Laravel hadManyThrough relationship

のDbsは、次のようになります。

ユーザー私はを持っている私のuserモデルで

Standard Laravel users table 

リーグ

id | name | description 

提出

id | user_id | league_id 
public function joinedLeagues() 
    { 
     return $this->hasManyThrough('App\League', 'App\Submission'); 
    } 

ただし、これは何も返しません。私はこれを間違ってやっていますか?

答えて

0

Eloquentは、submissionsテーブルのuser_idテーブルを検査し、一致するサブミッションIDを見つけたらleaguesテーブルのクエリに使用します。あなたのテーブルは次のようになります。

ユーザー:

id - interger 
name - string 

提出:

id - integer 
user_id - integer 
name - string 
description - string 

リーグ:

id - integer 
name - string 
submission_id - integer 
+0

リーグには別のモデルを使って多数の提出物があるので、それはうまくいかない。提出によってすべてのリーグを獲得する方法はありますか?たぶん私はカスタムDBクエリを行うだけです。 – Packy

+0

4番目のモデルとは何ですか?彼らの間の関係は何ですか? –

+0

多対多を使用すると「wod」になります。だからリーグには多くの狂気がある。 'Wods'には多くの' Submissions'があります。 dbの 'Submission'には' league_id 'と' wod_id'と 'user_id'があります。だから、すべての 'リーグ 'には'ユーザー'が入っているので、すべての投稿を見る – Packy

0

ここでは、私は私が知っていることを、今何をしたかでありますクエリとLaravel

public function joinedLeagues() 
    { 
     //Make and empty array 
     $league_ids = array(); 

     //Get all submissions from the user 
     $submissions = Auth::user()->submissions; 

     foreach ($submissions as $submission) { 
      //Add the league id to the array 
      array_push($league_ids, $submission->league_id); 
     } 

     //Now find the leagues based off submissions 
     $leagues = League::findMany($league_ids); 

     return $leagues; 
    } 
関連する問題