2014-07-23 111 views
1

我有三個主要元素的模型:問題,答案和遊戲。他們每個人都有標籤關聯,但這些標籤需要共享。我的意思是,應該爲這三種元素使用相同的標籤:「科學」標籤應該應用於問題,答案或遊戲,或者其中三種。Symfony2和Doctrine multiple ManyToMany的關係

我該怎麼做?是否在標籤實體中爲每種元素添加了一個ManyToMany字段,或者是否有其他方式將它們聯繫起來?任何想法?

回答

1

我會選擇1)在每個實體上添加ManyToMany關係。

class Question 
{ 
    // ... 

    /** 
    * @ORM\ManyToMany(targetEntity="Tag") 
    * 
    **/ 
    private $tags; 
} 

class Answer 
{ 
    // ... 

    /** 
    * @ORM\ManyToMany(targetEntity="Tag") 
    * 
    **/ 
    private $tags; 
} 

class Game 
{ 
    // ... 

    /** 
    * @ORM\ManyToMany(targetEntity="Tag") 
    * 
    **/ 
    private $tags; 
} 
+1

那麼你可以看看這個學說擴展https://github.com/FabienPennequin/DoctrineExtensions-Taggable – GiDo

+1

通過這一解決方案,標籤實體將有3個協會和每一個標籤的對象將有2個空協會。我認爲伊克澤正在尋找更乾淨的東西。 – AlixB

+0

沒錯。在這種情況下,我的標籤會包含問題ID,答案ID和遊戲ID,通常其中有兩個不必要地爲空。 – Ikzer