【问题标题】:Doctrine return array of array for a scalar query用于标量查询的 Doctrine 返回数组数组
【发布时间】: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!我添加了一个答案。

标签: arrays symfony doctrine-orm


【解决方案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 将根据要求为单个值(不是数组)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-03
    • 2019-11-30
    • 2018-04-20
    • 2016-03-24
    • 2015-11-26
    • 2017-10-17
    • 2018-06-12
    • 1970-01-01
    相关资源
    最近更新 更多