Symfony 2.0.15 と組み合わせて Doctrine2.2.2 を使用しています。たとえば、クラス テーブルの継承を使用すると、次のようになります。
/**
* @Entity
* @InheritanceType("JOINED")
* @DiscriminatorColumn(name="discr", type="string")
* @DiscriminatorMap({"person" = "Person", "employee" = "Employee"})
*/
これにより、子エンティティ/テーブル (この場合は従業員) に外部キー カスケード削除制約が作成されます。これに関するDoctrineのドキュメントには、次のような重要な黄色のボックスが含まれています。
SchemaTool を使用して必要な SQL を生成しない場合、クラス テーブルの継承を削除すると、すべてのデータベース実装で外部キー プロパティ ON DELETE CASCADE が使用されることを知っておく必要があります。これを自分で実装しないと、データベース内でデッド行が発生します。
これは私には意味がありません。これは、SchemaTool を使用しない場合、Doctrine が外部キー カスケード削除制約を作成するということですか? SchemaTool を使用した場合、Doctrine は代わりに組み込みのカスケード機能を使用しますか?