【问题标题】:Need to set a max results limit on KnP Paginator?需要在 KnP Paginator 上设置最大结果限制吗?
【发布时间】:2017-03-18 18:05:40
【问题描述】:

正如标题所说,我正在尝试对 KnP Paginator 可用于分页的结果实施限制。我假设对我的查询设置限制没有任何作用,因为分页器对查询设置了自己的限制以显示每页正确的行数。

我的用例相当简单:用户在 UI 中应用了一些过滤器(字段必须等于 X、order by 等),然后代码将这些过滤器转换为查询构建器的输入。限制是允许用户说“显示 [插入条件] 为真的前 100 个条目,按 [字段] 排序”。除非我在文档中遗漏了某些内容,否则目前似乎无法使用 KnP Paginator。

【问题讨论】:

  • 你发现knp_paginator服务的paginate方法的第三个参数了吗?
  • 肯定已经在使用它了。我正在寻找的是一种限制更大数据集然后对其进行分页的方法。换句话说,一种告诉分页器我只想显示 500 个结果的方法,但仍然给我每页 20 个最多 500 个结果。据我所知,这目前是不可能的,所以我实现了一个 UI 解决方法来停止显示结果在我达到所需的限制之后。

标签: symfony doctrine-orm knppaginator


【解决方案1】:

使用自定义count查询:

<?php
$count = 500;

$query = $entityManager
    ->createQuery('SELECT a FROM AcmeMainBundle:Article a')
    ->setHint('knp_paginator.count', $count)
;
$pagination = $paginator->paginate($query, $page, 10);

【讨论】:

  • 所以这似乎几乎可以工作。根据您的描述添加计数提示会限制可用页面的总数,但例如,我将其设置为 25,每页 20 个,并希望在 page=2 上看到 5 个结果,但是我在第二页上得到了所有 20 个结果。知道为什么会这样吗?
猜你喜欢
  • 2017-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多