Doctrine 2.2 でクラステーブル継承パターンを使用しています。私のDBスキーマは次のとおりです。
親
access_id (主キー) access_type
(識別子列)
access_role
access_acl
access_primary
user_id (外部キー)
子 1
access_id (外部キー)
account_id (外部キー)
子 2
access_id (外部キー)
distribution_id (外部キー)
新しいエンティティをデータベースに挿入しようとすると、親クエリは問題ないように見えますが、子クエリには余分なパラメーターがあります。実行中のクエリをダンプすると、次のようになりました。
INSERT INTO user_access_account (access_id, account_id) VALUES (?, ?)
array('1'=> 39, '2'=> NULL, '3'=> 3 )
'2' インデックスは関係ありません。'1' => 39、'2' => 3 が正しいパラメーターです。
このクエリの実行に使用されるコードは次のとおりです。
$entity = new Entity\UserAccessAccount();
$entity->setAccount($account)
->setUser($user)
->setAccessRole($accessRole)
->setAccessAcl($accessAcl)
->setAccessPrimary($accessPrimary);
$em->persist($entity);
$em->flush($entity);