我希望得到我的查询结果(限制为10)+计算可能的结果。 我知道有类似的问题和答案。
但如果我尝试计算可能的行数(通过getSingleScalarResult()
),我将获得除{:1}}
The query returned multiple rows. Change the query or use a different result function like getScalarResult().
我只需要一个整数whitch代表我查询的所有结果。 我怎样才能得到这个计数?非常适合db。
修改
如果我删除 $query = $repository
->createQueryBuilder('t')
->select('COUNT(t.katId)', 't.hotel', 't.title', 't.desc', 'picture', 'MIN(t.price) AS price');
$query->where('t.visible = (:visible)')->setParameter('visible', 1);
// + some wheres, where in, more than....
$query->groupBy('t.hotel');
$query->setMaxResults(10);
echo $query->getQuery()->getSingleScalarResult();
exit();
并选择仅保留$query->groupBy('t.hotel');
,那么它可以正常工作。但我需要->select('count(t.katId)');
,因为它会对结果进行实际计算。
解
我将它分为两个查询,以便在尝试任何计数信息之前将我回滚的结果更改为状态,并使克隆此查询(在设置groupBy
和setMaxResults
之前),更改选择(保持所有人,并获取计数信息。
如果有人提供更好的解决方案,我将不胜感激
获得结果:
groupBy
获取计数:
->getArrayResults
答案 0 :(得分:1)
如果您需要保留groupBy:
$query = $repository->createQueryBuilder('t')
$query->select('COUNT(t.katId)', 't.hotel', 't.title', 't.desc', 'picture', 'MIN(t.price) AS price');
$query->from(ENTITY STRING, 't', 't.hotel'); //here defined your array result key
$query->where('t.visible = (:visible)')->setParameter('visible', 1);
$query->groupBy('t.hotel');
$query->setMaxResults(10);
echo $query->getQuery()->getScalarResult();
exit();
编辑:新编辑有效吗?
答案 1 :(得分:0)
你只对COUNT(t.katId)感兴趣,所以你应该删除其他返回的字段't.hotel','t.title'等。
结果将包含单个返回值(单个标量结果),因此不需要$query->setMaxResults(10)
。