>我在教义 2.2 中使用类表继承模式。 我的数据库架构如下:
父母
access_id(主键)
access_type(鉴别器列)
access_role
access_acl
access_primaryuser_id(外键)
儿童 1
access_id(外键)
account_id(外键)
儿童 2
access_id(外键)
distributor_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);
事实证明,自动生成的实体映射有一些需要删除的数据。 从UserAccessAccount
到UserAccess
oneToOne
定义使教义相信有一个额外的参数。 现在说得通了!
正确:
Entity'UserAccessAccount:
type: entity
table: user_access_account
repositoryClass: Repository'UserAccessAccount
oneToOne:
account:
targetEntity: Entity'Account
cascade: { }
mappedBy: null
inversedBy: null
joinColumns:
account_id:
referencedColumnName: account_id
orphanRemoval: false
lifecycleCallbacks: { }
不對:
Entity'UserAccessAccount:
type: entity
table: user_access_account
repositoryClass: Repository'UserAccessAccount
oneToOne:
account:
targetEntity: Entity'Account
cascade: { }
mappedBy: null
inversedBy: null
joinColumns:
account_id:
referencedColumnName: account_id
orphanRemoval: false
userAccess:
targetEntity: Entity'UserAccess
cascade: { }
mappedBy: null
inversedBy: null
joinColumns:
access_id:
referencedColumnName: user_access
lifecycleCallbacks: { }