Я пытаюсь определить некоторую схему базы данных для использования рамки laravel. Я хочу смоделировать футбольный матч. Первый шаг, который я хотел сделать, - это определить диаграмму Entity Relationship, но я обнаружил, что это (что, по моему мнению, было бы довольно тривиальным) было бы запутанным в некоторых аспектах.
Во-первых, очевидный подход заключается в том, что Матч связан с двумя командами, а команда связана с любым количеством совпадений. Таким образом, у нас было бы отношение "от многих до многих".
Но реализация отношения "многие-многие" состоит в том, чтобы иметь две таблицы и промежуточную таблицу для связывания обоих объектов. Я думаю, что это будет слишком много, когда я знаю, что в матче всегда будет две Команды, и просто иметь два столбца (local_id и visitant_id) с внешними ключами в таблице команд будет достаточно. Кроме того, я хочу иметь возможность:
Match::find(1)->local() or Match::find(1)->visitant();
Итак, размышляя над этим, я реализую отношение "Один к многим", но с этим у меня другая проблема. Чтобы получить все совпадения, которые сыграла Команда, я хотел бы сделать:
Team::find(1)->matches();
Но я не могу этого сделать, потому что я могу указать только один ключевой столбец при определении метода match() в красноречивом (по умолчанию это будет team_id, но он должен быть visitant_id и local_id).