【发布时间】:2019-09-24 14:23:37
【问题描述】:
所以,我正在开发一个运动系统,其中games 表与同一张表teams 有两个关系。我知道上下文通常无关紧要,但我试图弄清楚为什么数据库是以这种方式构建的。关系存储为games.home_id references teams.id 和games.away_id references teams.id 以链接同一场比赛中的两支球队。表结构是
- games
- id
- home_id
- away_id
- starts_at
- teams
- id
- team_players
- id
- team_id
所以,如果我想让今天的所有玩家都参加比赛,我会这样做
SELECT team_players.*
FROM team_players
JOIN teams ON (teams.team_id = team_players.team_id)
JOIN games ON (teams.id = games.home_id OR teams.id = games.away_id)
WHERE games.starts_at <= $starts AND games.starts_at >= $ends
如何在模型中创建hasMany 关系以同时包含(team.id = games.home_id OR team.id = games.away_id)?
我已经尝试过类似的东西
class Team {
public function game()
{
return $this->hasMany(Game::class);
}
}
class Game {
public function teams()
{
$rel = $this->hasMany(Game::class, 'home_id');
$rel->orHasMany(Game::class, 'home_id');
return $rel;
}
}
但是没有orHasMany();
谢谢。
【问题讨论】: