获取FOSUserBundle组的用户(Symfony2)

时间:2012-08-01 22:23:21

标签: php symfony fosuserbundle

在过去的几个小时里,我一直在努力解决这个问题,但却找不到任何东西。

我已配置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类中,我甚至没有定义$ user列表。我尝试了很多“普通”的东西,比如在我的Group类中创建一个$ users变量并定义它与User对象的关系,但是它与FOSUserBundle不一致(每次创建一个新表来创建关系,当已经存在一个)。例如:

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

有什么建议吗?

同样,我的主要目标是:我希望能够进行Group-> getUsers()

1 个答案:

答案 0 :(得分:1)

在您的Group类中,您的targetEntity必须是User而不是Group。此外,尝试为$ groups attributs添加一个inversedBy规则,并在mappedBy中为$ users添加modifie 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;