2012-03-13 97 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