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()
。看见