CakePHP 3.x为分页指定不同的计数查询

时间:2018-03-17 19:25:59

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

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

我知道另一个用户问过这个问题,但从未接听过。

Cakephp 3.x Custom Query Pagination

我已经尝试过在2.x中使用自定义 paginateCount 函数在实体和表格中工作的方式,但是我的工作方式都没有用找到与计数有关的任何事情。

1 个答案:

答案 0 :(得分: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参数将是查询本身的副本。

另见