2017-01-09 11 views
1

という名前のエンティティがあり、Layoutというエンティティに属するエンティティがあるとします。要素とレイアウトにはManyToOneの関係があり、多くの要素は1つのLayoutに属します。Doctrine ORM既定値なし既存のエンティティ

使用されるデータベースエンジンはMySQLです。さらに、layout_idの一部である一意のキーを使用します。そのため、(複合ユニークキーのため)にすることができないlayout_idという列があり、デフォルト値は0です。Elementsテーブルにあります。 0の値は魔法の値であり、コードベース全体で「No Layout assigned」と扱われます(ElementLayoutの間にFKがありません)。

Doctrine ORMの問題点は、IDが0のレイアウトを読み込もうとしているため、存在しないため見つからないということです。 には他の外部キーがあり、他にも制約があるため、ID 0Layoutエントリを作成することはできません。

これを解決する方法についてのご提案はありますか?基本的に、のlayout_id0の場合は、Layoutをロードしません。

答えて

1

この場合、複合キーの一部としてlayout_idを設定することはできません。これは、外部キー制約のためです。 layout_idnullable(コンポジットキーの一部ではないことを意味します)またはlayoutテーブルでID 0で行を作成する必要があります(IDとして使用できる)。

解決策は、複合キーを使用せず、エンティティ(代理キー)を一意に識別するための主キー列を追加することです。

関連する問題