CakePHP: модель, которая принадлежит нескольким другим, по одному - PullRequest
1 голос
/ 12 января 2010

У меня есть три таблицы: «пользователи», «курсы» и «документы». Я хотел бы загружать документы как пользователям, так и курсам, поэтому мне нужно два отношения отношения для модели документа. Некоторые принадлежат одной модели, некоторые другой.

Есть ли простое решение для построения этих отношений?

Как я могу настроить действия "add"?

Я знаю, что мог бы создать две таблицы соединений и использовать HABTM, но это не так. Документ принадлежит только к одному другому элементу. Кроме того, я хочу иметь возможность расширить отношения на большее количество моделей, если это необходимо.

1 Ответ

4 голосов
/ 12 января 2010

То, что вы ищете, называется полиморфизмом. По сути, вы не связываете модель с фиксированной другой моделью через одно поле other_model_id, но отслеживаете два поля: other_model_class и other_model_foreign_key. Таким образом, вы можете связать Document с class: User, id: 42 в одном случае и class: Course, id: 42 в другом. В пекарне есть поведение , которое должно быть хорошим началом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...