Php 原则结果映射应返回数组

Php 原则结果映射应返回数组,php,doctrine-orm,Php,Doctrine Orm,我有一个疑问: select count(*) as total_count, sum(total) as total_value, status from invoice group by status; 当我在数据库中执行它时,我得到以下结果: 我希望使用Doctrine2实现同样的效果,但以下代码只返回一行: $rsm = new ResultSetMapping(); $rsm->addScalarResult('total_count', 'totalCount'); $rs

我有一个疑问:

select count(*) as total_count, sum(total) as total_value, status from invoice group by status;
当我在数据库中执行它时,我得到以下结果:

我希望使用Doctrine2实现同样的效果,但以下代码只返回一行:

$rsm = new ResultSetMapping();
$rsm->addScalarResult('total_count', 'totalCount');
$rsm->addScalarResult('total_value', 'totalValue');
$rsm->addScalarResult('status', 'status');

$query = $this->getObjectManager()->createNativeQuery('
  select count(*) as total_count, sum(total) as total_value, status from invoice group by status', $rsm);

$result = $query->getResult();

return $result;
这是上述因素的结果:

array (size=1)
  0 => 
    array (size=3)
      'totalCount' => string '1432' (length=1)
      'totalValue' => string '55447.80999999999' (length=2)
      'status' => string 'paid' (length=4)
你应使用:

$result = $query->getScalarResult();
而不是:

$result = $query->getResult();
希望您能使用以下帮助:

$result = $query->getScalarResult();
而不是:

$result = $query->getResult();

希望此帮助

,因为您正在使用
getResult
原则,它将尝试为您获取所有匹配的行。如果不希望结果是数组的数组,则需要使用条令

所以对你来说,简单地说:

$result = $query->getSingleResult();
如果返回多个或无返回,还可以限制抛出
QueryException
的结果数:

$query->setMaxResults(1);

因为您正在使用
getResult
doctor,所以它将尝试为您获取所有匹配的行。如果不希望结果是数组的数组,则需要使用条令

所以对你来说,简单地说:

$result = $query->getSingleResult();
如果返回多个或无返回,还可以限制抛出
QueryException
的结果数:

$query->setMaxResults(1);

尝试使用
$query->getResult(AbstractQuery::HYDRATE\u SINGLE\u SCALAR)
@Matteo,它为我提供了
查询返回了一行,其中包含多个列。更改查询或使用其他结果函数,如getScalarResult()。
我认为条令可以为您获取多行。尝试使用
getSingleResult()
。请参阅。尝试使用
$query->getResult(AbstractQuery::HYDRATE\u SINGLE\u SCALAR)
@Matteo,它为我提供了
查询返回了一行,其中包含多个列。更改查询或使用其他结果函数,如getScalarResult()。
我认为条令可以为您获取多行。尝试使用
getSingleResult()
。看见