Как установить отношение принадлежности к модели 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')
),
...
);