Модель CakePHP принадлежит любой другой модели

Я не уверен, что такое правильное название. Вот моя проблема:

Существует несколько моделей, таких как:
Компания
Лицо (не то же, что и Пользователи)
Пользователь
и т. д.

К некоторым из них необходимо прикрепить один или несколько файлов.

Поэтому я создал модель UploadedFile. Как связать это с любой из вышеперечисленных моделей? Иногда UploadedFile принадлежит компании. Иногда UploadedFile принадлежит Person

Если UploadedFile принадлежит Компании, то он не принадлежит другим лицам, таким как Лицо.

Все UploadedFile принадлежат Пользователю (потому что они загружают их, и мне нужно отслеживать, кто их загрузил)

Здесь работает HABTM? Любые другие лучшие способы?

Большое спасибо за помощь.

С уважением,
Тони.


person georget    schedule 21.07.2011    source источник


Ответы (1)


Сделайте UploadedFile доступным для всех трех (Пользователь, Компания и Лицо):

var $belongsTo = array(
    'User' => array('className' => 'User','foreignKey' => 'user_id'),
    'Company' => array('className' => 'Company','foreignKey' => 'company_id'),
    'Person' => array('className' => 'Person','foreignKey' => 'person_id'));

Поскольку он всегда принадлежит пользователю, user_id всегда будет иметь значение.

Затем вы проверите, установлен ли company_id или установлен person_id, и определите, к какому из них принадлежит файл. У меня есть приложение, которое работает именно так. Это немного кропотливо, но другого решения я не нашел

Еще одной хорошей идеей будет попытаться объединить Person и Company в одной таблице и просто установить флажок, чтобы различать их.

person Martin Taleski    schedule 21.07.2011
comment
Привет Мартин, спасибо за быстрый ответ. Звучит как хорошая идея. Я попробую это. Я думаю, что это также может быть использовано для другой похожей проблемы: у каждой компании может быть много акционеров, но акционером может быть другая компания или физическое лицо. - person georget; 21.07.2011