【问题标题】:doctrine bidirectional one-to-one relation教义双向一对一关系
【发布时间】:2014-07-10 16:59:54
【问题描述】:

我知道在 symfony2/doctrine 中,为了创建双向关系,我们必须将其告知到两个实体的注释中。

我需要的是通过仅修改一个实体的注释来创建这种双向关系,这意味着在其他实体注释中没有关于另一个实体的任何内容。

这可能吗?

【问题讨论】:

  • 你想要一个单向的一对一关系吗?
  • 不,我需要双向一对一关系,只修改一个实体。
  • 实际上我有一个依赖于环境的实体,这意味着当它是 dev 环境时,我的项目应该看到它,但它不应该在 prod 环境中。
  • 仅当两个实体相互引用时才会发生双向。您不能仅与 1 个实体建立双向关系。但是,您的问题可能最好以另一种方式解决。为什么你有一个基于环境的条件表?有没有更好的方法来处理该功能?

标签: php symfony doctrine-orm


【解决方案1】:

您描述的是单向关联,文档:http://doctrine-orm.readthedocs.org/en/latest/reference/unitofwork-associations.html?highlight=bidirectional 声明了以下规则来实现双向关联:

以下规则适用于双向关联:

  • 反面必须使用 OneToOne、OneToMany 或 ManyToMany 映射声明的 mappedBy 属性。 mappedBy 属性包含拥有方的关联字段的名称。
  • 拥有方必须使用 OneToOne、ManyToOne 或 ManyToMany 映射声明的 inversedBy 属性。 inversedBy 属性包含反面关联字段的名称。
  • ManyToOne 始终是双向关联的拥有方。
  • OneToMany 始终是双向关联的反面。
  • OneToOne 关联的拥有方是具有包含外键的表的实体。
  • 您可以自己选择多对多关联的拥有方。

所以我不能确定这是否可能,但无论如何这可能会违反规则,这可能会导致一些错误。为什么你还需要这种关联?

【讨论】:

    猜你喜欢
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    • 2011-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多