【问题标题】:CakePHP 3.x Specify a Different Count Query for PaginationCakePHP 3.x 为分页指定不同的计数查询
【发布时间】:2018-08-26 17:14:36
【问题描述】:

我正在尝试自定义 CakePHP 的分页查询我正在使用基于视图的模型。该视图中有一些复杂的计算,当分页运行时,大约需要 3 秒才能拉出 20 行左右。然后它运行相同的视图,该视图包含在分页中使用的计数中。我可以在另一个表上运行一个简单的表计数,这会将加载时间减半,但我无法找到一种简单的方法来自定义一个单独的查询来运行计数。这甚至可能吗?

我知道另一个用户问了这个问题,但从未得到回答。

Cakephp 3.x Custom Query Pagination

我已经尝试了在实体和表格中使用自定义 paginateCount 函数在 2.x 中使用的方法,但两者都不起作用我通过 API 挖掘了一下,但不能找到与计数相关的任何东西。

【问题讨论】:

标签: cakephp count pagination query-builder cakephp-3.x


【解决方案1】:

一种选择是使用查询构建器的counter() 方法提供回调,根据您的自定义查询返回记录数。

$query->counter(function (\Cake\ORM\Query $query) {
    // assuming $this uses \Cake\ORM\Locator\LocatorAwareTrait
    $OtherTable = $this->getTableLocator()->get('Other');
    $otherQuery = $OtherTable->find();

    // ...

    return $otherQuery->count();
});

$query 参数将是查询本身的克隆。您可以修改该查询,也可以构建一个全新的查询。

另见

【讨论】:

  • 我明天看看这个。
猜你喜欢
  • 2015-06-19
  • 2023-03-21
  • 2016-04-19
  • 1970-01-01
  • 2019-05-18
  • 2016-12-29
  • 2018-03-25
  • 2019-12-10
  • 2015-05-10
相关资源
最近更新 更多