gpt4 book ai didi

php - 通过 getSingleScalarResult() 和 groupBy() 获取计数查询结果 - 异常

转载 作者:行者123 更新时间:2023-11-29 02:45:23 26 4
gpt4 key购买 nike

我想获得我的查询结果(限制为 10)+ 计算可能的结果。我知道有类似的问题和答案。

for example here

但如果我尝试获取可能的行数(通过 getSingleScalarResult()),我将得到异常:查询返回多行。更改查询或使用不同的结果函数,例如 getScalarResult()。

    $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,因为它可以计算结果。


解决方案

我将其分为两个查询 - 为了获得结果,我在尝试任何计数信息之前将更改回滚到状态,并克隆此查询(在设置 setMaxResultsgroupBy),更改选择(保留所有位置)并获取计数信息。

如果有人提供更好的解决方案,我将不胜感激

  1. 获取结果:

    • 从选择中删除了 COUNT()
    • 请求结果更改为“正常”->getArrayResults
  2. 获取计数:

    $q = clone $query;

    $q->select('count(distinct t.hotel) as count');
    $r = $q->getQuery()->getArrayResult();

    echo $r[0]['count'];
    exit();

最佳答案

如果你需要保留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();

编辑:新的编辑作品?

关于php - 通过 getSingleScalarResult() 和 groupBy() 获取计数查询结果 - 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43202217/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com