Есть ли способ помешать Доктрине назначить противопоказание с обеих сторон отношений один на один? Я пытался переместить определение из одной стороны в другую и использовать собственную сторону, но оно по-прежнему накладывает ограничение на обе таблицы. когда я хочу, чтобы родительская таблица имела ограничение - т.е. родитель может не иметь ассоциированного ребенка.
Например, я хочу использовать следующую схему 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 (банкомат для установки в виде груш) - в случае, если проблема связана с sfDoctrinePlugin и не обязательно с самой Doctrine.