Cakephp 3同一模型多分页?
我一直在做一个项目,遇到了一个问题:在CakePHP3中,一个视图需要对同一个模型在不同条件下进行两次分页 例如,在同一视图上列出的已打开和已关闭的支持票证 下面是我的代码。有人能帮我吗Cakephp 3同一模型多分页?,cakephp,controller,pagination,conditional-statements,cakephp-3.x,Cakephp,Controller,Pagination,Conditional Statements,Cakephp 3.x,我一直在做一个项目,遇到了一个问题:在CakePHP3中,一个视图需要对同一个模型在不同条件下进行两次分页 例如,在同一视图上列出的已打开和已关闭的支持票证 下面是我的代码。有人能帮我吗 //Opened status pagination $opened_paginate = [ 'contain' => ['Comments'], 'conditions' => [ 'AND' => ['SupportTickets.status' =>
//Opened status pagination
$opened_paginate = [
'contain' => ['Comments'],
'conditions' => [
'AND' => ['SupportTickets.status' => '1']
],
'order' => ['SupportTickets.id' => 'DESC'],
'limit' => 1
];
// Closed status pagination
$closed_paginate = [
'contain' => ['Comments'],
'conditions' => [
'AND' => ['SupportTickets.status' => '2']
],
'order' => ['SupportTickets.id' => 'DESC'],
'limit' => 1
];
$this->set('opened', $this->Paginator->paginate(
$this->SupportTickets->find(),
$opened_paginate
));
$this->set('closed', $this->Paginator->paginate(
$this->SupportTickets->find(),
$closed_paginate
));
您可以在一个操作中对不同的模型进行分页(请参见),但我认为这在同一个模型上不起作用 也许你可以通过使用或这个或那个来构建一些奇怪的东西,但我建议你重新思考你正在尝试做什么,并且消除在一个视图中多次分页相同模型的需要 可以使用以下命令在单个控制器操作中对多个模型进行分页: 控制器的$paginate属性和中的范围选项 对paginate()方法的调用: 在这里我找到了答案。 在控制器中:
$this->loadModel('Members');
$paginator1 = $this->paginate(
$this->Members->find()->where(['tag' => 1]), [
'model' => 'Members',
'scope' => 'scope1'
]
);
eval('namespace App\Model\Table;'
. 'class Members2 extends \App\Model\Table\Members {}');
$this->loadModel('Members2');
$paginator2 = $this->paginate(
$this->Members2->find()->where(['tag' => 2]), [
'model' => 'Members2',
'scope' => 'scope2'
]
);
他认为:
// first paginator
echo $this->Paginator->sort('title', ['model' => 'Members']);
// second paginator
echo $this->Paginator->sort('title', ['model' => 'Members2']);
您是否计划在视图上共享分页?由于
打开的
和关闭的
可能有不同的页数,这可能会导致问题。使用AJAX为每个表发出分页请求可能会更好。使用不同的别名创建同一个表时,它应该会起作用。请考虑一下这一点。但是没有时间去测试。
// first paginator
echo $this->Paginator->sort('title', ['model' => 'Members']);
// second paginator
echo $this->Paginator->sort('title', ['model' => 'Members2']);