Итак, я разрабатываю спортивную систему, в которой таблица games
имеет 2 отношения для одной таблицы teams
. Я знаю, что контекст обычно не имеет значения, но я пытаюсь прояснить, почему база данных структурирована таким образом. Отношения сохраняются как games.home_id references teams.id
и games.away_id references teams.id
, чтобы связать 2 команды в одной игре. Структуры таблиц
- 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()
;
Спасибо.