2017-06-23 56 views
0

所以我有3個型號User,LeagueSubmission。我試圖查詢所有leagues一個user已經有submissions到。Laravel hadManyThrough relationship

星展的樣子:

用戶

Standard Laravel users table 

聯賽

id | name | description 

提交

id | user_id | league_id 
在我 user模型

我有

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

但這不會返回任何內容。我做錯了嗎?

回答

0

雄辯會檢查中間submissionsuser_id查找匹配提交ID後,他們將用於查詢leagues表。你的表必須是這樣的:

用戶:

id - interger 
name - string 

意見:

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

聯賽:

id - integer 
name - string 
submission_id - integer 
+0

這不會工作,因爲聯賽有通過另一種模式噸提交。沒有辦法通過提交獲得所有聯賽嗎?也許我會只做一個自定義數據庫查詢。 – Packy

+0

什麼是第四種模式?他們之間有什麼關係? –

+0

這將是'wod'與多對多。所以'聯賽'有很多'wods'。 'Wods'有很多'Submissions'。 db中的'Submission'有'league_id'和'wod_id'和'user_id'。因此,爲了獲得所有'聯盟''用戶',我們看所有的'提交' – Packy

0

這裏是我做的,現在我知道有一個findMany用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; 
    }