获取FOSUserBundle组(Symfony2)的用户


Getting the users of an FOSUserBundle Group (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类中,我甚至没有定义$user列表。我尝试了很多"正常"的事情,比如在我的Group类中创建一个$users变量,并定义它与User对象的关系,但使用FOSUserBundle并不好(每次,当已经有关系时,它都会创建一个新表来创建关系)。例如:

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

有什么建议吗?

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

在Group类中,targetEntity必须是User,而不是Group。此外,尝试为$groups属性添加invertedBy规则,并为$users在mappedBy中修改invertedBi。

/**
 * @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;