用于标量查询的 Doctrine 返回数组数组
Posted
技术标签:
【中文标题】用于标量查询的 Doctrine 返回数组数组【英文标题】:Doctrine return array of array for a scalar query 【发布时间】:2016-01-22 18:56:53 【问题描述】:使用教义和查询构建器,我编写了一个SELECT MAX()
查询,当这个结果作为参数传递给另一个查询构建器时,查询就可以正常工作了。
但由于某种原因,我在另一个存储库的其他地方使用本机 SQL 查询,当我使用 $repo->getMaxMyThing()
时,它返回给我一个数组数组,如
array(array('1' => 42))
.
不是说如果我想要结果,我需要输入:$max[0]['1']
(0 是一个简单的数组索引,但 '1' 是一个字符串关联键)。
Doctrine Bundle 中是否存在任何方法可以自动将其“转换”为简单整数?
【问题讨论】:
显示方法getMaxMyThing的代码 你试过用getSingleScalarResult()吗? @A.L 它有效,谢谢,对不起,我完全忘记给你回复了。回答问题,以便我验证。 @rickozoe 感谢您的 ping!我添加了一个答案。 【参考方案1】:当您不希望 Doctrine 返回实体时,您可以使用get*ScalarResult() query methods。
Query#getScalarResult()
:检索可以包含重复数据的标量值的平面/矩形结果集。纯/混合的区别不适用。Query#getSingleScalarResult()
:从 dbms 返回的结果中检索单个标量值。如果结果包含多个标量值,则会引发异常。纯/混合的区别不适用。
这是文档中的一个示例:
$query = $em->createQuery('SELECT COUNT(u.id) FROM Entities\User u');
$count = $query->getSingleScalarResult();
$count
将根据要求为单个值(不是数组)。
【讨论】:
以上是关于用于标量查询的 Doctrine 返回数组数组的主要内容,如果未能解决你的问题,请参考以下文章
Doctrine queryBuilder:返回对象而不是数组
Symfony4 / Doctrine,如何选择“不同”的对象? getResult() 返回字符串数组,而不是对象数组