Как установить отношение принадлежности к модели CakePHP в зависимости от поля?

У меня есть таблица уведомлений следующим образом:

id
parent_type
parent_id

parent_type может быть историей, главой или содержанием

Я хочу сказать модель уведомления:

- если parent_type - это история, то parent_id будет внешним ключом в Story. - Если parent_type - это глава, то parent_id будет внешним ключом в главе. - Если parent_type является содержимым, то parent_id будет внешним ключом в Content.

Это возможно?

Спасибо

1 ответ

Решение

Когда вы смотрите в книгу здесь:

http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html

он говорит, что вы можете установить условия в определении для принадлежности. Таким образом, вы можете определить три разные ассоциации для разных условий, например:

public $belongsTo = array(
    'Story' => array(
        'className' => 'Story',
        'foreignKey' => 'parent_id',
        'conditions' => array('Notification.parent_type' => 'story')
    ),
    ...
);
Другие вопросы по тегам