0

我对这一切感到困惑。

我认为 Doctrine 不允许您在连接中使用主键(我在某处读过),但我在这里看到http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference /limitations-and-known-issues.html它说“不可能使用指向非主键的连接列”,这似乎相反。

无论如何,我想加入主键,所以我肯定可以做到吗?我正在尝试建立一个简单的一对一关系。这就是我所拥有的,但我遇到了指向这个问题的各种错误。

我可以通过加入不是主键的字段来设置它,但在我想使用它的情况下,这对我来说似乎很垃圾。

我只是想要一个额外的数据库表来扩展主数据库表。根据任何限制,最好的方法是什么?

我正在使用 Doctrine 2.2,但可以使用任何版本。

下面的代码是我希望工作的,但它不允许这样做。

--

用户:

user_id # primary
field_1
field_2

额外用户信息:

extra_id # primary
extra_info_1
extra_info_2

用户.orm.yml:

User:
    type: entity
    table: null
    fields:
        user_id:
            id: true
            generator:
                strategy: AUTO
        field_1:
            type: string
        field_2:
            type: string

    oneToOne:
        user_id:
            targetEntity: UserExtra
            mappedBy: extra_id

UserExtra.orm.yml:

UserExtra:
    type: entity
    table: null
    fields:
        extra_id:
            id: true
            generator:
                strategy: AUTO
        extra_info_1:
            type: string
        extra_info_2:
            type: string

    oneToOne:
        extra_id:
            targetEntity: User
            mappedBy: user_id
4

1 回答 1

1

您的架构不正确。id 应该在idkey not under 下fields,你永远不应该somethig_id在实体中写入。您通过引用而不是数据库 ID 将对象绑定在一起。请仔细阅读文档。从 Doctrine 2.1 开始,可以在相关实体中使用主键作为外键:identity-through-foreign-entities

User:
  type: entity
  id:
    id:
      type: integer
      generator:
        strategy: AUTO

Address:
  type: entity
  id:
    user:
      associationKey: true
  oneToOne:
    user:
      targetEntity: User
于 2013-09-19T00:22:07.337 回答