You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取结果总数?——Symfony中Pagerfanta与Twig的使用

获取Pagerfanta分页结果的总数

嘿,这个问题解决起来超简单!Pagerfanta本身就封装好了获取结果总数的方法,不用你额外写统计查询,下面分两种场景给你说明:

1. 在PHP控制器中提前获取总数

你的findAllProductsByCategory方法返回的是Pagerfanta实例,这个实例自带getNbResults()方法,你可以在控制器里调用它拿到总数,再传递给Twig模板:

// 假设这是你的控制器方法
public function listProductsByCategory($category, Request $request)
{
    $page = $request->query->getInt('page', 1);
    $productRepository = $this->getDoctrine()->getRepository(Product::class);
    
    // 调用你的仓库方法获取分页器
    $paginator = $productRepository->findAllProductsByCategory($category, $page);
    
    // 获取结果总数
    $totalProducts = $paginator->getNbResults();
    
    // 把分页器和总数传给Twig
    return $this->render('products/list.html.twig', [
        'paginator' => $paginator,
        'total_products' => $totalProducts,
    ]);
}

2. 在Twig模板中直接调用

你也可以不用在控制器里提前处理,直接在Twig模板中通过魔术属性访问getNbResults()方法的结果:

{# 显示总数 #}
<div class="total-count">
    共找到 <strong>{{ paginator.nbResults }}</strong> 个商品
</div>

{# 正常循环分页结果 #}
{% for product in paginator %}
    <div class="product-item">
        {# 你的商品展示代码 #}
        <h3>{{ product.name }}</h3>
    </div>
{% endfor %}

补充小提示

Pagerfanta的getNbResults()方法会自动生成并执行优化后的COUNT查询,完全基于你原有的查询条件计算总数,结果绝对准确。对于你说的“少量数据行”,完全不用担心性能问题~

内容的提问来源于stack exchange,提问作者ABSimon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:44:44