我有4张桌子,
user_challenges
user_scores
用户
挑战
如何在UserChallenge模型中获取user_scores值?
在eagerloading中可以使用的正确关系是什么。
我需要这样的东西:
public function scores ()
{
return UserScore::where('user_id', $this->user_id)->where('challenge_id', $this->challenge_id);
}
答案 0 :(得分:1)
我认为您在查询结束时错过了->get()
来电。
尝试:
public function scores ()
{
return UserScore::where('user_id', $this->user_id)->where('challenge_id', $this->challenge_id)->get();
}
答案 1 :(得分:0)
您的设置没有任何关系(afaik)。您寻求两个数据透视表之间的关系,这是非常罕见的。
我认为你有两种可能性:
1)将它们合并到1个表中
2)user_scores不应该有user_id和challenge_id,而是一个关键user_challenges_id,并且应该与belongs_challenges属于belongsTo关系。
答案 2 :(得分:0)
使用UserChallenge模型时,有两种方法可以获得user_scores。
您可以使用“查询”构建器,就像您的示例中一样。你只需要添加->get();
即可,或者它无法正常工作。
其次,您可以使用您定义的关系。
例:
$userChallenge = UserChallenge::find(1);
return $userChallenge->user->user_scores
如果您已正确定义关系,则每个模型都可以在更深层次链接到下一个模型