用于标量查询的 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:返回对象而不是数组

如何得到一个一维标量数组作为一个学说dql查询结果?

Symfony4 / Doctrine,如何选择“不同”的对象? getResult() 返回字符串数组,而不是对象数组

教义queryBuilder:返回对象而不是数组

Fortran函数,根据输入返回标量OR数组

Doctrine DBAL - 带有附加参数的 WHERE IN 数组