【问题标题】:CakePHP 2 how to do multiple pagination with same modelCakePHP 2 如何使用同一模型进行多个分页
【发布时间】:2013-11-21 02:17:40
【问题描述】:

所以,我有 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'));        
    }

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

【问题讨论】:

标签: jquery ajax cakephp pagination cakephp-2.0


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    你可以在 Model::find() params 'page' 和 limit 中看到:

    示例:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-11-30
        • 1970-01-01
        • 1970-01-01
        • 2013-09-30
        • 1970-01-01
        • 2013-12-01
        • 1970-01-01
        相关资源
        最近更新 更多