【问题标题】:count total rows returned by query in doctrine 2 zf2计算学说 2 zf2 中查询返回的总行数
【发布时间】:2016-02-03 07:58:14
【问题描述】:
$countQuery = $qb->select('q.id,d.name,d.numbers')
            ->from('Application\Entity\quests', 'q');
            ->leftJoin('q.dots', 'd');
$query1 = $countQuery->getQuery()->getResult();

现在我将如何获得返回的结果总数 **i don't want to write 2 queries** bcz 会增加执行时间 我试过了

 $countQuery = $qb->select('count(q.id) as total_results,d.name,d.numbers')
            ->from('Application\Entity\quests', 'q');
            ->leftJoin('q.dots', 'd');
$query1 = $countQuery->getQuery()->getResult();

但它不工作

【问题讨论】:

    标签: symfony zend-framework doctrine-orm zend-framework2 doctrine


    【解决方案1】:

    getResult() 方法返回一个结果数组。要计算 getResult() 方法返回的总结果,只需使用 PHP 函数 count 计算它。

    $countQuery = $qb
        ->select('q.id,d.name,d.numbers)
        ->from('Application\Entity\quests', 'q')
        ->leftJoin('q.dots', 'd');
    
    $query1 = $countQuery->getQuery()->getResult();
    
    $totalResults = count($query1);
    

    如果您想对查询进行分页,那么在计算总行数时,您需要执行两个查询。一种用于分页结果,另一种用于计算数据库中的所有行。

    【讨论】:

    • 它返回 ["count_id"]=> string(1) "1" 每个数组,但我希望它返回结果总数
    • 如果我返回 100 行,它应该说 100 行
    • getResult() 返回一个数组,这样您就可以简单地调用 count ($query1); 来获取返回结果的数量,而不是添加 count query
    • 是的,我现在正在做,但如果我想计算查询我会怎么做
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-16
    • 2013-10-03
    • 1970-01-01
    • 1970-01-01
    • 2021-12-09
    • 1970-01-01
    相关资源
    最近更新 更多