有没有办法阻止 Doctrine 在一对一关系的双方分配约束?我尝试将定义从一侧移动到另一侧并使用拥有侧,但它仍然对两个表都施加了约束。当我只希望父表有一个约束时 - 即。父母可能没有关联的孩子。
例如,我本质上想要以下 sql 模式:
CREATE TABLE `parent_table` (
`child_id` varchar(50) NOT NULL,
`id` integer UNSIGNED NOT NULL auto_increment,
PRIMARY KEY (`id`)
);
CREATE TABLE `child_table` (
`id` integer UNSIGNED NOT NULL auto_increment,
`child_id` varchar(50) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY (`child_id`),
CONSTRAINT `parent_table_child_id_FK_child_table_child_id`
FOREIGN KEY (`child_id`)
REFERENCES `parent_table` (`child_id`)
);
但是我得到这样的东西:
CREATE TABLE `parent_table` (
`child_id` varchar(50) NOT NULL,
`id` integer UNSIGNED NOT NULL auto_increment,
PRIMARY KEY (`id`),
CONSTRAINT `child_table_child_id_FK_parent_table_child_id`
FOREIGN KEY (`child_id`)
REFERENCES `child_table` (`child_id`)
);
CREATE TABLE `child_table` (
`id` integer UNSIGNED NOT NULL auto_increment,
`child_id` varchar(50) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY (`child_id`),
CONSTRAINT `parent_table_child_id_FK_child_table_child_id`
FOREIGN KEY (`child_id`)
REFERENCES `parent_table` (`child_id`)
);
我可以手动删除约束或修改我的访问器以返回/设置集合中的单个实体(使用一对多),但似乎应该内置处理此问题的方法。
我也在使用 Symfony 1.4.4 (pear installtion ATM) - 如果它是 sfDoctrinePlugin 问题而不一定是 Doctrine 本身。