Doctrine查询如何直接返回求和结果字符串而非嵌套数组
解决方法
你只需要调整查询的结果获取方法,也可以给聚合字段添加别名提升可读性,修改后的代码如下:
//HoursRepository.php public function findHoursTotal($user) { return $this->createQueryBuilder('h') ->where('h.user = :user') ->select('SUM(h.total) AS hoursTotal') ->setParameter('user', $user) ->getQuery() ->getSingleScalarResult(); }
修改说明
- 给
SUM(h.total)添加别名hoursTotal,避免Doctrine自动生成无意义的数字键 - 将原有的
getResult()替换为getSingleScalarResult():该方法会直接返回查询得到的首个标量结果,也就是你需要的"52400"字符串,不会产生嵌套数组结构。
如果需要兼容无匹配数据的场景,可以添加异常处理:
//HoursRepository.php public function findHoursTotal($user) { try { return $this->createQueryBuilder('h') ->where('h.user = :user') ->select('SUM(h.total)') ->setParameter('user', $user) ->getQuery() ->getSingleScalarResult(); } catch (\Doctrine\ORM\NoResultException $e) { // 无对应数据时返回默认值,可根据业务需求调整 return '0'; } }
内容的提问来源于stack exchange,提问作者johannes
相关产品推荐
相关产品推荐

