如何使用createQueryBuilder添加另一列来计算值?

问题描述 投票:0回答:1

当我查询用户的详细信息以计算连接到每个用户的设备时,此代码可以正常工作。

 $em = $this->getEntityManager();
 $query = 'SELECT u.id, u.email, COALESCE(c, 0) devices FROM user u left join (select user_id, count(user_id) c from user_device where permission_level = 3 group by user_id) ud on u.id = ud.user_id';

 $statement = $em->getConnection()->prepare($query);
 $result = $statement->executeQuery()->fetchAllAssociative();
 dd($result);

此查询的输出是

id 电子邮件 设备
1 [电子邮件受保护] 5
2 [电子邮件受保护] 1

我想知道是否有另一种方法可以使用

达到相同的结果
 $qb = $this->createQueryBuilder('u');

我尝试实现它,但它无法读取 COALESCE 功能。

在这种情况下,我有一个表用户

id 电子邮件
1 [电子邮件受保护]
2 [电子邮件受保护]

我有表 user_device

用户 设备
1 12
1 13
1 15
1 14
2 12
1 16
doctrine-orm symfony4
1个回答
0
投票

推荐使用symfony关系。查看此链接了解详细信息

© www.soinside.com 2019 - 2024. All rights reserved.