2

所以,我有 1 个视图,我需要为相同模型的 2 个表进行分页,但条件不同。例如:

Task Model --> 1st pagination --just paginate task assigned to me
           --> 2nd pagination --paginate task created by me

有没有办法做到这一点?

    public function dashboard() {
        $this->layout = 'user';
        $limit = 5;
//debug($this->Session->read('Auth.User.id'));
//debug($this->Session->read('Auth.User.group_id'));

        //My Task Pagination
        $this->paginate = array(
            'Project' => array(
                'limit' => $limit,
                //'contain' => array('ProjectReminderUser.user_id =' . $this->Session->read('Auth.User.id')),
                'conditions' => array(
                    'User.group_id' => $this->Session->read('Auth.User.group_id'),
                    //'ProjectReminderUser.user_id' => $this->Session->read('Auth.User.id'),
                ),
            )
        );
        $this->set('myTasks', $this->paginate('Project'));  
        //debug($this->paginate('Project'));

        //Group Task Pagination
        $this->paginate = array(
            'Project' => array(
                'limit' => $limit,
                //'contain' => array('ProjectReminderUser.user_id =' . $this->Session->read('Auth.User.id')),
                'conditions' => array(
                    'User.group_id' => $this->Session->read('Auth.User.group_id'),
                    //'ProjectReminderUser.user_id' => $this->Session->read('Auth.User.id'),
                ),
            )
        );
        $this->set('groupTasks', $this->paginate('Project'));   
        //debug($this->paginate('Project'));        
    }

这段代码还没有区分条件。但我想知道我怎么能做到这一点。因为使用我当前的代码,每次我尝试对页面进行排序或移动时,由于模型相同,它会对两个表执行相同的操作。

4

3 回答 3

1

几天前我遇到了同样的问题。以我的经验,我从http://deadlytechnology.com/php/paginate-multiple-data-sets/找到了最好的解决方案。虽然这是一个非常古老的帖子,但我认为这是所有类型多分页的最佳解决方案,即相同模型多分页、多模型相同视图分页等。

解决方案: 使用 CakePHP 像往常一样加载一个分页。另一个使用来自任何控制器的另一个操作的 AJAX 请求加载。如果您对两种分页都使用 AJAX 分页,它将具有交互性和意义。

于 2014-03-02T18:32:37.997 回答
0

您可以使用多个 iframe 独立加载分页。我知道已经晚了,但希望可以帮助那些遇到这个问题的人。

于 2014-03-16T04:41:07.200 回答
0

您可以在 Model::find() 参数 'page' 和 limit 中看到:

例子:

$params=array('conditions'=>$conditions,'limit'=>$limitByPage,'page'=>$page );
$this->Model->find('all',$params);

只需设置 $limitByPage 和 $page 。如果您想知道页数,只需使用 "count" / $limitByPage 即可。

于 2013-12-03T14:47:38.407 回答