我现在正在学习 Laravel 和 Laravel 雄辩,现在我尝试使用 Laravel 中的关系来解决问题。这是我要归档的内容:
该数据库包含许多体育俱乐部。体育俱乐部有很多球队。每支球队都有比赛。团队表有一个名为 的列club_id
。现在我想创建 Eloquent 关系以获取俱乐部的所有游戏。
这是我到目前为止得到的:
俱乐部模型
id => PRIMARY
public function games()
{
return $this->hasMany('App\Models\Games')->whereHas('homeTeam')->orWhereHas('guestTeam');
}
游戏模型
home_id => FOREIGN KEY of team ; guest_id => FOREIGN KEY of team
public function homeTeam()
{
return $this->belongsTo('App\Models\Team','home_id')->where('club_id','=', $club_id);
}
public function guestTeam()
{
return $this->belongsTo('App\Models\Team','guest_id')->where('club_id','=', $club_id);
}
团队模型
id => PRIMARY ; club_id => FOREIGN
在我的控制器中,我想做的就是Club::findOrFail($id)->games()
执行上面的代码会返回一个 SQL 错误,即 games 表没有名为 的列club_id
。
创建这种关系的正确方法是什么?
谢谢!
编辑
感谢 Nikola Gavric,我找到了获得所有比赛的方法——但仅限于俱乐部球队是主队或客队的情况。
这是关系:
public function games()
{
return $this->hasManyThrough('App\Models\Game','App\Models\Team','club_id','home_id');
}
如何获得 home_id 或 guest_id 与俱乐部球队匹配的比赛?此函数中的最后一个参数不允许使用数组。