Php 获取FOSUserBundle组(Symfony2)的用户

Php 获取FOSUserBundle组(Symfony2)的用户,php,symfony,fosuserbundle,Php,Symfony,Fosuserbundle,在过去的几个小时里,我一直在为这个问题苦苦挣扎,没有找到任何东西 我已配置FOSUserBundle,并已正确激活组并正常工作。但是,用户组关系在用户类中定义如下: /** * @ORM\ManyToMany(targetEntity="Netlabs\UserBundle\Entity\Group") * @ORM\JoinTable(name="fos_user_user_group", * joinColumns={@ORM\JoinColumn(name="user_id

在过去的几个小时里,我一直在为这个问题苦苦挣扎,没有找到任何东西

我已配置FOSUserBundle,并已正确激活组并正常工作。但是,用户组关系在用户类中定义如下:

/**
 * @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类中执行Group->getUsers()

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


在组类中,targetEntity必须是用户而不是组。此外,尝试为$groups属性添加inversedBy规则,并在mappedBy中为$users修改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;


在根据您的建议修改代码并运行“条令:生成:实体”和“条令:模式:更新——强制”后,它仍然会创建一个新表“组用户”,而不是使用它应该使用的“fos_用户组”。使用ManyTo§any关系,您必须创建一个新表。这是保存对象之间关系的唯一方法。我知道,但是FOSUserBundle已经创建了一个名为“fos_user_user_group”的表,它正好满足了这个目的。应该只有1个表,而不是2个。您是否尝试在$users属性上方添加@ORM\JoinTable(name=“fos\u user\u user\u group”)?您是否不想这样做?在根据您的建议修改代码并运行“条令:生成:实体”和“条令:模式:更新——强制”后,它仍然会创建一个新表“组用户”,而不是使用它应该使用的“fos_用户组”。使用ManyTo§any关系,您必须创建一个新表。这是保存对象之间关系的唯一方法。我知道,但是FOSUserBundle已经创建了一个名为“fos_user_user_group”的表,它正好满足了这个目的。应该只有1个表,而不是2个。您是否尝试在$users属性上方添加@ORM\JoinTable(name=“fos\u user\u user\u group”)?您是否不想这样做?