У меня есть следующие таблицы:CakePHP Присоединение же модель дважды
domains (id, name)
alignments (id, name, description)
alignments_domains(id, alignment_id, domain_id)
domains_domains(id, domain_id, authorized_domain_id)
Все мои внешние ключи сделаны и то, что я пытаюсь добиться, чтобы иметь несколько разрешенных доменов и несколько авторизованного выравнивания для каждого домена.
Дело в том, когда я торт модель выпекать, контроллер и вид у меня есть эта модель:
class Domain extends AppModel
public $validate = array(
'name' => array(
'notEmpty' => array(
'rule' => array('notEmpty'),
//'message' => 'Your custom message here',
//'allowEmpty' => false,
//'required' => false,
//'last' => false, // Stop validation after this rule
//'on' => 'create', // Limit validation to 'create' or 'update' operations
),
),
);
public $hasAndBelongsToMany = array(
'Alignment' => array(
'className' => 'Alignment',
'joinTable' => 'alignments_domains',
'foreignKey' => 'domain_id',
'associationForeignKey' => 'alignment_id',
'unique' => 'keepExisting',
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'finderQuery' => '',
),
'Domain' => array(
'className' => 'Domain',
'joinTable' => 'domains_domains',
'foreignKey' => 'domain_id',
'associationForeignKey' => 'domain_id',
'unique' => 'keepExisting',
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'finderQuery' => '',
),
'Role' => array(
'className' => 'Role',
'joinTable' => 'roles_domains',
'foreignKey' => 'domain_id',
'associationForeignKey' => 'role_id',
'unique' => 'keepExisting',
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'finderQuery' => '',
)
);
}
Но когда я пытаюсь вставить новый домен, он дает мне эту ошибку:
Error: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`mythall_php`.`alignments_domains`, CONSTRAINT `alignments_domains_ibfk_2` FOREIGN KEY (`domain_id`) REFERENCES `domains` (`id`))
Есть ли у вас какие-либо предложения о том, как я могу сделать это возможным? Спасибо!