CakePHP两次加入相同的模型
CakePHP Joining same model twice
我有以下表格:
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`))
您对我如何使这成为可能有什么建议吗?
谢谢!
我是 cakephp 的新手。
我遇到过此类错误。我的错误是我在设置外键之前添加了更多行。
尝试在 phpmyadmin 中清空这四个表(再次检查关系约束)
添加域、对齐方式并执行此操作。
并查看此站点以获取一些参考:enter link description here
我找到的解决方案是将 hasandbelongtomany 'domain' 更改为 'authorized_domain' 并将关联的外键更改为 'authorized_domain_id' 然后烘焙工作正常。
'Authorized_Domain' => array(
'className' => 'Domain',
'joinTable' => 'domains_domains',
'foreignKey' => 'domain_id',
'associationForeignKey' => 'authorized_domain_id',
'unique' => 'keepExisting',
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'finderQuery' => '',
)
我有以下表格:
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`))
您对我如何使这成为可能有什么建议吗? 谢谢!
我是 cakephp 的新手。
我遇到过此类错误。我的错误是我在设置外键之前添加了更多行。
尝试在 phpmyadmin 中清空这四个表(再次检查关系约束) 添加域、对齐方式并执行此操作。
并查看此站点以获取一些参考:enter link description here
我找到的解决方案是将 hasandbelongtomany 'domain' 更改为 'authorized_domain' 并将关联的外键更改为 'authorized_domain_id' 然后烘焙工作正常。
'Authorized_Domain' => array(
'className' => 'Domain',
'joinTable' => 'domains_domains',
'foreignKey' => 'domain_id',
'associationForeignKey' => 'authorized_domain_id',
'unique' => 'keepExisting',
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'finderQuery' => '',
)