2012-08-01 67 views
1

過去幾個小時,我一直在爲這個問題苦苦掙扎,一直未能找到任何東西。獲取FOSUserBundle組的用戶(Symfony2)

我已經配置了FOSUserBundle並讓組正確激活並正常工作。但是,用戶組關係定義爲User類如下:

/** 
* @ORM\ManyToMany(targetEntity="Netlabs\UserBundle\Entity\Group") 
* @ORM\JoinTable(name="fos_user_user_group", 
*  joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")}, 
*  inverseJoinColumns={@ORM\JoinColumn(name="group_id", referencedColumnName="id")} 
*) 
*/ 
protected $groups; 

,並在組類,我甚至不具有定義的$用戶列表。我嘗試了很多「正常」的東西,比如在我的Group類中創建一個$ users變量,並將其定義爲與User對象的關係,但它與FOSUserBundle並不搭配(每次創建一個新表來創建關係,當已經有一個時)。例如:

/** 
* @ORM\ManyToMany(targetEntity="Netlabs\UserBundle\Entity\Group", inversedBy="groups", cascade={"all"}) 
* 
*/ 
protected $users; 

有什麼建議嗎?

同樣,我的主要目標是:我希望能夠做到集團 - > getUsers()

回答

1

在組類,您targetEntity必須是用戶,而不是集團。此外,嘗試爲$ groups屬性添加inversedBy規則,併爲$ users的mappedBy添加修改inversedBy。

/** 
* @ORM\ManyToMany(targetEntity="Netlabs\UserBundle\Entity\Group", inversedBy="users") 
* @ORM\JoinTable(name="fos_user_user_group", 
*  joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")}, 
*  inverseJoinColumns={@ORM\JoinColumn(name="group_id", referencedColumnName="id")} 
*) 
*/ 
protected $groups; 

而且

/** 
* @ORM\ManyToMany(targetEntity="Netlabs\UserBundle\Entity\User", mappedBy="groups") 
* 
*/ 
protected $users; 
+0

修改代碼以您的建議和運行後「的信條:生成:實體」和「學說:模式:更新--force」,它仍然會創建一個新表「 group_user「,而不是使用它應該的」fos_user_user_group「。 – JoshuaWohle 2012-08-02 09:52:46

+0

使用ManyTo§any關係時,您必須創建一個新表。這是保存對象之間關係的唯一方法。 – 2012-08-02 09:55:15

+0

我知道,但是FOSUserBundle已經創建了一個名爲「fos_user_user_group」的表格,它滿足了這個目的。應該只有一個表,而不是2. – JoshuaWohle 2012-08-02 10:06:04

相關問題