Я разрабатываю таблицу базы данных, называемую answers
. Поля будут source_type
и source_id
и т. Д. source_type
- это «вопрос» или «комментарий», которые являются таблицами. Теперь проблема в том, что я хочу source_id
в таблице answers
для ссылки id
в questions
или id
в comments
в зависимости от значения поля source_type
.Laravel Ссылки на любой стол
Таким образом, в нормальной ситуации это будет либо это:
$table->foreign('source_id')->references('id')->on('questions');
или это
$table->foreign('source_id')->references('id')->on('comments');
Однако, как я могу не уверен, как добавить ограничение в любой таблице?
Вы не можете моделировать полиморфное отношение, используя ограничения sql. Внешний ключ может относиться только к одной таблице. – Needpoule
@MrShibby Благодарим вас за то, что было бы хорошим дизайном базы данных для этой конкретной ситуации? –
Обратите внимание, что для larvel и eloquent не нужен внешний ключ для создания отношений между вашей моделью. Но если вы хотите сохранить хороший дизайн базы данных, я нашел два интересных ответа: http://stackoverflow.com/questions/441001/possible-to-do-a-mysql-foreign-key-to-one-of-two -возможные таблицы и http://stackoverflow.com/questions/922184/why-can-you-not-have-a-foreign-key-in-a-polymorphic-association – Needpoule