Pagination 如何在CakePHP 3中对自定义查找器的结果进行分页

Pagination 如何在CakePHP 3中对自定义查找器的结果进行分页,pagination,cakephp-3.0,cakephp-3.x,Pagination,Cakephp 3.0,Cakephp 3.x,在CakePHP 3特别是3.7中,如何对自定义查找器的结果进行分页 我有一个带有自定义查找器的模型: // src/Model/Table/RevisionFiltersTable.php public function findRegulatoryNotifications($date_start, $date_end, $regulation_id = 1, $u_id, $o_id, $count_only = false) { } 在这个查找器中,有一些方法可以使用ORM并执行查询

在CakePHP 3特别是3.7中,如何对自定义查找器的结果进行分页

我有一个带有自定义查找器的模型:

// src/Model/Table/RevisionFiltersTable.php
public function findRegulatoryNotifications($date_start, $date_end, $regulation_id = 1, $u_id, $o_id, $count_only = false)
{

}
在这个查找器中,有一些方法可以使用ORM并执行查询,返回$query->toArray

目前,我正在控制器方法中手动调用此函数,如下所示:

$RevisionFilters = TableRegistry::getTableLocator()->get('RevisionFilters');
$data = $RevisionFilters->findRegulatoryNotifications(...);
它返回所有正确的数据,但未分页。例如,如果有55行,我会得到一个包含55个键的数组

我传入的参数适用于FindRegulatoryNotification的签名

我在文档中读过关于使用分页和自定义查找程序的内容

但我不知道如何在我的控制器中实现这一点

文件中给出了一个例子:

$this->paginate = [
        'finder' => [
            'tagged' => $customFinderOptions
        ]
    ];
所以我想我可以这样做:

$RevisionFilters->paginate = [
        'finder' => [
            'regulatoryNotifications' => $customFinderOptions
        ]
    ];
我不明白在这种情况下$customFinderOptions应该设置为什么

假设我能够克服这个问题,那么我如何将我的论点传递给FindRegulatoryNotification呢


无法提供比这更多的代码,因为我不知道如何设置它。

这不是查找器方法应该是什么样子,查找器只接受两个参数,第一个是查询本身,第二个是传递给query::find的第二个参数的选项数组,在这个例子中,$customFinderOptions就是一个选项数组

这里只有一个表方法,如果您想使用它进行分页,该方法需要返回一个查询对象,您可以手动调用该方法并将其返回值传递给分页器

另见