Я новичок в Laravel здесь.Некоторая путаница в отношении красноречивых отношений.
Я пытаюсь добиться этого: Отношения
Вот диаграмма ER
- 1 Вопрос может быть любого типа (множественный выбор / упорядочение / сопоставление / и т. Д.)
- 1 выборка AKA 1 строка в каждой таблице {type} может быть сопоставлена только с 1 вопросом
В ER-диаграмме подсвеченная красным цветом часть была моей первой мыслью (Полиморфная 1-ко-многим), но теперь я изменил ее на многозначную с помощью сводной таблицы:
[сводная таблица]
question_id | choiceable_id | choiceable_type
Однако возникает вопрос: Как определить этот тип отношений в моделях?
- Полиморфный тип «многие ко многим» правильного типа?
- Как правильно выбрать вариант ответа на случайный вопрос?
Потому чтоесли я понимаю док.правильно, мне нужно вызвать каждый тип и указать таблицу внутри, но я чувствую, что это немного грязно ...
// Question Model
function get_multiple_choices {
return $this->morphedByMany('App\TypeMultipleChoice', 'choiceable')
function get_ordering_choices {
return $this->morphedByMany('App\TypeOrderingChoice', 'choiceable')
...
это правильный код?И я до сих пор не знаю о выборе для случайной части вопроса.Почему-то я чувствую, что должен быть более простой способ сделать такой выбор.
РЕДАКТИРОВАТЬ
Хорошо, позвольте мне перефразировать его.
МожетЯ использую / Как использовать:
// Question Model
function choices {
// $this->MorphTo,MorphedByMany, etc. ?
}
вместо
// Question Model
function get_multiple_choices {}
function get_matching_choices {}
function get_ordering_choices {}
... x 4-5 more times