У меня есть следующие таблицы:CakePHP: Настройка связи между двумя моделями с помощью третьей таблицы
- пользователи
- Организации
- EMAIL_ADDRESSES
- Email_Address_Relations
пользователей и организации могут иметь адреса электронной почты, которые хранятся в таблице Email_Addresses и связаны с помощью Email_Address_Relations t возможность.
Структура Email_Address_Relations
id char(36) NOT NULL
module varchar(64) NOT NULL DEFAULT 'User'
record_id char(36) NOT NULL
email_address_id char(36) NOT NULL
created datetime NOT NULL
modified datetime NOT NULL
Моя идея заключается в том, чтобы указать тип адреса электронной почты (пользователь или организация), используя соответствующее значение в модулы поля. В полях record_id и email_address_id поля будут отображать правильный адрес электронной почты из адресов электронной почты в адрес владельца или организации владельца.
Как мне настроить такую модель в CakePHP?
Спасибо, м^е
Чтобы ответить на мой последний комментарий по настройке модели для обеспечения значения по умолчанию для модуля поля, ДА, это может быть сделано как я found out from CakePHP Forums.
Вот как это делается.
class User extends AppModel {
var $hasMany = array(
'EmailAddress' => array(
'className' => 'EmailAddress',
'foreignKey' => 'record_id',
'conditions' => array(
'EmailAddress.module' => 'User'
)
)
);
}
class Organization extends AppModel {
var $hasMany = array(
'EmailAddress' => array(
'className' => 'EmailAddress',
'foreignKey' => 'record_id',
'conditions' => array(
'EmailAddress.module' => 'Organization'
)
)
);
}
Errrm .. Спасибо, я думаю, что заставляю меня чувствовать себя глупо: D Иногда, когда вы слишком много думаете, это то, что происходит с вами .. lol. Ага! Ваш путь намного проще. Приветствия. –
Последующий вопрос по этому вопросу. Можно ли установить значение по умолчанию для поля «module» в моделях User и Organization, чтобы отношение пользователя к Email_Addresses всегда использовало строку «Пользователь» для модуля и аналогично Организация будет использовать «Org» ... –
Не думайте так, не можете придумать способ добиться этого. – PawelMysior