【问题标题】:Cannot insert new entity with class table inheritance (Doctrine 2.2)无法插入具有类表继承的新实体(Doctrine 2.2)
【发布时间】:2012-04-24 19:04:26
【问题描述】:

我在 Doctrine 2.2 中使用类表继承模式。我的数据库架构如下:

家长
access_id(主键)
access_type(鉴别器列)
访问角色
access_acl
access_primary
user_id(外键)

孩子 1
access_id(外键)
account_id(外键)

孩子 2
access_id(外键)
分发者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);

【问题讨论】:

  • 您能发布一下您是如何创建查询的吗?
  • @devdRew 感谢您的回复。我发布了您要求的代码。

标签: php orm doctrine-orm class-table-inheritance


【解决方案1】:

事实证明,自动生成的实体映射有一些需要删除的数据。从UserAccessAccount 回到UserAccessoneToOne 定义导致Doctrine 相信有一个额外的参数。现在说得通了!

正确:

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: {  }

【讨论】:

    猜你喜欢
    • 2012-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-19
    • 2011-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多