@Donald_Duck

Как указать внешний ключ на несколько таблиц?

Здравствуйте! Есть несколько таблиц: posts, comments, messages и т.д. И у каждой есть связанная таблица post_files, comment_files и т.д. Но они по сути идентичны, и вот решил их объединить в одну добавив поле с типом (post, message, ...,) и общее поле которое будет связывать (relationship_id). Вот только как сделать, что бы работал внешний ключ понять не могу.

Как это можно указать в контексте Laravel? Знаю как только связать с одной таблицей
$table->foreign('relationship_id')->references('id')->on('posts');

А вот как связать с несколькими?

Ну или если не правильно подхожу к решению задачи, то буду рад, если поставите на путь истинный :)
  • Вопрос задан
  • 820 просмотров
Решения вопроса 3
Sanasol
@Sanasol Куратор тега Laravel
нельзя просто так взять и загуглить ошибку
alexey-m-ukolov
@alexey-m-ukolov Куратор тега MySQL
как сделать, что бы работал внешний ключ
Никак, Mysql это не поддерживает.
Ответ написан
Комментировать
В комментах к одному из предыдущих ответов немного ощутимо наврали
->foreign() играет роль, и существенную, т.к. создают FK на уровне СУБД, что даёт:
1. Целостность
2. Индексы
Другое дело, что связи в Ларавел могут работать без FK. Что иногда не имеет значения, а иногда плохо.
И, если я правильно помню, при создании связи в Ларе индексы автоматом не создаются, тогда вам скорее всего нужно будет их создать явно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы