0

我有 3 个实体。

  • 用户

  • 团体

  • 用户组

Users 实体包含用户,Groups 包含组,这两个实体与 user_groups 之间存在多对多关系。

在我的用户实体中,我可以获得分配给我的用户的那些组:

/**
 * @ORM\ManyToMany(targetEntity="Groups", inversedBy="users")
 * @ORM\JoinTable(name="user_groups",
 *   joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")},
 *   inverseJoinColumns={@ORM\JoinColumn(name="group_id", referencedColumnName="id")}
 * )
 */
private $groups;

这很简单,但是我怎样才能得到那些没有分配给我的用户的组呢?

有没有什么方法可以得到多对多关系的“逆结果”?

谢谢!

4

1 回答 1

1

您可以在 queryBuilder中使用NOT MEMBER OF表达式:

...
->andWhere(':user NOT MEMBER OF g.users')
->setParameter('user', $user)
...
于 2013-07-31T11:34:19.030 回答