原则不在连接表中

时间:2018-05-30 10:25:53

标签: symfony doctrine-orm

我很难解决一个非常微不足道的问题。 我需要获取连接office_user表中不存在的所有USER实体。我正在使用Symfony 3.4和Docrine。

SQL看起来像这样:

SELECT * FROM user
LEFT JOIN office_users ON user.id = office_users.userId
WHERE role = 'ROLE_USER' AND office_users.userId is null

SELECT * FROM user
WHERE id NOT IN (SELECT userId FROM office_users)

但不能用Docrine解决这个问题。

这是办公室实体

//AppBundle/Entity/Office
/**
 * @ManyToMany(targetEntity="User", inversedBy="office")
 * @JoinTable(name="office_users",
 *      joinColumns={@JoinColumn(name="officeId", referencedColumnName="id")},
 *      inverseJoinColumns={@JoinColumn(name="userId", referencedColumnName="id")}
 *      )
 */
private $users;

用户实体

/**
 * @ManyToMany(targetEntity="Office", mappedBy="users")
 */
 private $office;

和DQuery

$query = $this->getEntityManager()
           ->createQuery(
               'SELECT u FROM AppBundle:USER u LEFT JOIN u.office o WHERE u.role = :role'
           );

$query->setParameters([
    'role' => 'ROLE_USER',
]);

return $query->getResult();

但是当我转储User实体时,我在Office集合中看不到任何元素,但我的mySQL数据库不同意。

0 个答案:

没有答案