CakePHP 2如何使用相同的模型进行多个分页

时间:2013-11-08 22:36:45

标签: jquery ajax cakephp pagination cakephp-2.0

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

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'));        
    }

此代码尚未区分条件。 但我想知道如何做到这一点。因为使用我当前的代码,每次我尝试排序或移动页面时,由于相同的模型,它对两个表都会做同样的事情。

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

你可以在Model :: find()params'page'中看到并限制:

例如:

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

只需设置$ limitByPage和$ page。 如果你想知道页面的数量,只需找到“count”/ $ limitByPage。

答案 2 :(得分:0)

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