【问题标题】:Symfony2 3-ary relationsSymfony2 三元关系
【发布时间】:2012-03-13 12:50:20
【问题描述】:

使用 Symfony2 和 orm.yml 文件将实体映射到数据库中,如何在实体 A、B、C 之间创建三元关系,从而生成包含 A_PrimaryKey、B_PrimaryKey、C_PrimaryKey 的 D 表实体是这样的:

A-B 多态 A-C 多线程 B-C 多态

【问题讨论】:

  • 您是否尝试过创建多对一/一对多的关系,就像创建其他关系一样?我猜这种关系自然不被支持!
  • 我尝试过,但我这样做失败了。你能告诉我你会怎么做吗?谢谢。

标签: orm doctrine symfony


【解决方案1】:

因此,您的基本模型如下所示:

A 1:n D
B 1:n D
C 1:n D

A 的 yml 如下所示:

Acme\TestBundle\Entity\A:
    type: entity
    # ...
    oneToMany:
        products:
            targetEntity: D
            mappedBy: d

你可以用 B 和 C 重复这个。对于 D,它看起来像这样:

Acme\TestBundle\Entity\D:
    type: entity
    # ...
    manyToOne:
        a:
            targetEntity: A
            inversedBy: as
            joinColumn:
                name: a_id
                referencedColumnName: id
        b:
            targetEntity: B
            inversedBy: bs
            joinColumn:
                name: b_id
                referencedColumnName: id
        c:
            targetEntity: C
            inversedBy: cs
            joinColumn:
                name: c_id
                referencedColumnName: id

试一试。也许先尝试映射 A 和 D。如果可行,请继续使用 B。这样您就更有可能在途中发现错误!

【讨论】:

  • 这是运行 php app/console 学说时的结果:schema:update --force:[PDOException] SQLSTATE[42000]:语法错误或访问冲突:1075 表定义不正确;只能有一个自动列,并且必须定义为一个键
  • 它现在工作正常。谢谢。错误是由于旧表造成的。
  • 如果实体A、B、C之间的关系是:A-B onetoone A-C onetomany B-C onetomany 会怎样
猜你喜欢
  • 2017-01-08
  • 1970-01-01
  • 2012-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-10
  • 1970-01-01
相关资源
最近更新 更多