2012-03-13 77 views
0

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

AB多对多 AC多对多BC 多对多

+0

您是否尝试过创建多对一/一对多的关系,就像使用其他关系一样?我猜想,这种关系是不受支持的! – Sgoettschkes 2012-03-13 13:25:20

+0

我试过,但因为我做了它失败了。你能指出我会怎么做吗?谢谢。 – Haritz 2012-03-13 14:13:48

回答

0

所以,你的基本模式是这样的:

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

的阳明对于A会是什么样子这样的:

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.因此你更容易在路上发现错误!

+0

这是运行php应用程序/控制台原则时的结果:schema:update --force:[PDOException] SQLSTATE [42000]:语法错误或访问冲突:1075错误的表定义;可以只有一个自动列,它必须被定义为一个键 – Haritz 2012-03-13 15:47:20

+0

现在它的工作正常。谢谢。该错误是由于旧桌子。 – Haritz 2012-03-13 16:16:00

+0

如果实体A,B,C之间的关系是:A-B onetoone A-C onetomany B-C onetomany – Haritz 2012-03-14 09:06:44