1

在过去的几个小时里,我一直在为这个问题而苦苦挣扎,但一无所获。

我已经配置了 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()

4

1 回答 1

1

在您的 Group 类中,您的 targetEntity 必须是 User 而不是 Group。此外,尝试为 $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;
于 2012-08-02T09:30:05.103 回答