2017-08-23 27 views
0

私は4つのテーブルを持って、Laravel 5.4 - モデルは2 foreigns

user_challenges

  • のuser_id

user_scoresをchallenge_id IDを持っているとき、私は正しい関係を取得できますか

  • ID
  • のuser_id
  • challenge_id

ユーザー

  • ID

挑戦

  • ID
  • タイトル

方法、UserChallengeモデルでは、私はuser_scores値を得ることができますか?

eagerloadingで使用できる正しい関係は何ですか?

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つのピボットテーブルの間の関係を求めていますが、これはまれです。

あなたがここに私の意見では2つの可能性があります。
1)1台
2にそれらをマージする)user_scoresはUSER_IDとchallenge_id、しかし、1つのキーuser_challenges_idを持つべきではないとだけuser_challengesにbelongsToの関係にする必要があります。

0

UserChallengeモデルを使用するときにuser_scoresを取得する方法は2つあります。 例のように、Query Builderを使用できます。あなたはそれに->get();を加える必要があります、またはそれは動かないでしょう。

第2に、定義した関係を使用できます。 例: $userChallenge = UserChallenge::find(1); return $userChallenge->user->user_scores

あなたはすべてのモデルは何の間、より深いレベル