Doctrine が 1 対 1 の関係の両側に制約を割り当てないようにする方法はありますか? 定義を一方から他方に移動し、所有側を使用しようとしましたが、それでも両方のテーブルに制約が課されます。親テーブルにのみ制約を持たせたい場合-つまり。親に子が関連付けられていない可能性があります。
たとえば、基本的に次の 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`)
);
制約を手動で削除するか、アクセサーを変更してコレクション内の単一のエンティティを返す/設定することができますが (1 対多を使用)、これを処理する方法が組み込まれているようです。
また、Symfony 1.4.4 (pear installtion ATM) を使用しています - sfDoctrinePlugin の問題であり、必ずしも Doctrine 自体ではない場合に備えて。