在过去的几个小时里,我一直在努力解决这个问题,但却找不到任何东西。
我已配置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()
答案 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;