2017-08-23 36 views
0

我有4個表,Laravel 5.4 - 我怎樣才能得到正確的關係時,模型有2個夷

user_challenges

  • ID
  • challenge_id
  • USER_ID

user_scores

  • ID
  • USER_ID
  • challenge_id

用戶

  • ID

挑戰

  • ID
  • 標題

如何,在UserChallenge型號,我可以得到user_scores價值?

在預先加載中可以使用的正確關係是什麼?

我需要的是這樣的:

public function scores() 
{ 
return UserScore::where('user_id', $this->user_id)->where('challenge_id', $this->challenge_id); 
} 
+0

什麼關係? –

+0

是不是簡單的belongsTo關係? – Tschallacka

+1

那麼'user_challenges'和'user_scores'之間有什麼區別?他們有相同的領域! – MisaGH

回答

1

我想你錯過了從查詢的末尾->get()通話。

嘗試:

public function scores() 
{ 
    return UserScore::where('user_id', $this->user_id)->where('challenge_id', $this->challenge_id)->get(); 
} 
+0

它不起作用=/ 返回我 '''' 方法addEagerConstraints不存在。 '''' –

+0

你可以發佈4個完整的模型文件供我們看看嗎? –

0

有適合你的設置沒有任何關係(據我所知)。你尋求兩個數據透視表之間的關係,這是非常罕見的。

你有2種可能性,在這裏我的觀點:
1)將它們合併爲1臺
2)user_scores不應該有USER_ID和challenge_id,但一個關鍵user_challenges_id,應該只是一個屬於關聯關係user_challenges。

0

使用UserChallenge模型時,有兩種方法可以獲取user_scores。 您可以使用查詢構建器,就像在您的示例中一樣。你只需要添加->get();即可,否則它不會工作。其次,你可以使用你定義的關係。 例子: $userChallenge = UserChallenge::find(1); return $userChallenge->user->user_scores

如果您定義的關係正確每個模型可以鏈接到下一個更深層次

相關問題