I have 2 entity:
/**
* @ORMEntity
* @ORMTable(name="users")
*/
class User
{
/**
* @ORMManyToMany(targetEntity="MyappUserBundleEntityGroup")
* @ORMJoinTable(name="user_groups",
* joinColumns={@ORMJoinColumn(name="user_id", referencedColumnName="id")},
* inverseJoinColumns={@ORMJoinColumn(name="group_id", referencedColumnName="id")}
* )
*/
protected $groups;
...
}
and
/**
* @ORMEntity(repositoryClass="MyappUserBundleRepositoryGroupRepository")
* @ORMTable(name="groups")
*/
class Group
...
I cant find a way to create a DQL query which results SQL like this:
SELECT g.name, g.id, count( u.id )
FROM users u
LEFT JOIN user_groups ug ON u.id = ug.user_id
RIGHT JOIN groups g ON g.id = ug.group_id
GROUP BY g.id
I tried and failed whith:
$this->getEntityManager()
->createQuery('
SELECT g.id, g.name, count(u.id) as usercount FROM MyappUserBundle:User u
JOIN u.groups g
GROUP BY g.id'
);
since the result not contains the groups that has no user.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…