我很难解决一个非常微不足道的问题。 我需要获取连接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数据库不同意。