我有三张桌子
队
id | Name
优胜者
id | user_id | league_id
team_user
team_id | user_id | league_id
我在Winner.php
模型中尝试做的是创建一种关系,通过user_id
和league_id
所以基本上我可以致电Winner->team
,它会返回Winner所属的小组,user_id
和league_id
都匹配。
我在想
public function team()
{
return $this->belongsTo('App\Team', 'user_id', 'league_id');
}
但这显然不起作用。我抓住了头脑,因为我拥有了让团队成员league_id
和user_id
所需的所有信息。
答案 0 :(得分:0)
如果您的获胜者模型在代码下面返回多个团队使用:
public function teams()
{
return $this->belongsToMany('App\Team', 'user_id', 'league_id');
}
如果您的获胜者模型仅使用以下代码返回一个团队:
public function team()
{
return $this->belongsTo('App\Team', 'user_id', 'league_id');
}
注意:belogsTo()中的第3个参数指定父表的自定义键
答案 1 :(得分:0)
您可以附加其他where()
条款:
public function team()
{
return $this->belongsTo('App\Team', 'user_id', 'user_id')->where('league_id', $this->league_id);
}
注意:这仅适用于lazy loading
。看here,它可能对你有帮助。
答案 2 :(得分:0)
我只是将它用作函数而不是关系并在我的控制器中循环使用。不是最好的,而是我所有的工作:
Winner.php
public function team()
{
$team_id = DB::table('team_user')
->where('league_id', $this->league_id )
->where('user_id', $this->user_id )
->first()
->team_id;
$team = Team::find( $team_id );
return $team;
}
在我的控制器中
foreach( $league->winners as $winner)
{
$winner['team'] = $winner->team();
}