繁体   English   中英

无法从cakephp分页连接中获得不同的行

[英]cant get distinct rows from cakephp pagination join

我无法从此搜索中获得不同的学生ID行。 我没有收到错误,返回的数据是正确的,因为一些学生的科目超过1个。 主题的原因是稍后包含搜索参数,因此我仍然需要联接中的主题。 这似乎什么也没做?'DISTINCT Student.id'

 $this->Student->recursive = -1;

        $joinoptions = array(

             array('table' => 'students_subjects',
                        'alias' => 'StudentsSubject',
                        'type' => 'LEFT',
                        'conditions' => array(
                        'Student.id=StudentsSubject.student_id',
                 )
                 ),     

           array('table' => 'guardians',
                'alias' => 'Guardian',
                'type' => 'LEFT',
                'conditions' => array(
                'Student.guardian_id=Guardian.id',
                 )
                 ),
           array('table' => 'subjects',
                        'alias' => 'Subject',
                        'type' => 'LEFT',
                        'conditions' => array(
                        'StudentsSubject.subject_id=Subject.id',
                 )
                 ),           

            );

         $fieldoptions = array('DISTINCT Student.id',' Student.last_name','Student.first_name',
             'Guardian.guardian_last_name','Guardian.guardian_first_name','Guardian.id','Guardian.guardian_mobile','Guardian.guardian_email',
                     'Subject.name','Subject.id'
             );

               $condionoptions= array(' Student.student_enq !=' => true,'Student.student_inactive !=' => true,'Student.tutor_gender_preference !=' => '', 

                      'AND' =>array(
                      array('OR' => array(
                                   array('Student.first_name LIKE'  => '%' . $searchFirstName  . '%'),
                                   array('Guardian.guardian_first_name LIKE'  => '%' . $searchFirstName  . '%'),

                        )),
                          /*
                      array('OR' => array(
                                   array('Student.last_name LIKE'  => '%' . $searchLastName  . '%'),
                                   array('Guardian.guardian_last_name LIKE'  => '%' . $searchLastName  . '%'),

                        )) ,
                        array('OR' => array(
                                   array('Student.student_mobile LIKE'  => '%' . $searchmobile  . '%'),
                                   array('Guardian.guardian_mobile LIKE'  => '%' . $searchmobile   . '%'),

                        ))
                         */ 
                        ) 
                       );


          $orderoptions =array('Student.first_name'=> 'ASC');             


        $this->Paginator->settings = array(
         'conditions'=> $condionoptions,
               'fields'=>$fieldoptions,
                'joins'=> $joinoptions,
                'limit' => 25,
        'recursive' =>-1,
                'order'=> $orderoptions,
               'page'=>1
               ); 

          $students= $this->Paginator->paginate('Student');  

样本输出

(int) 1 => array(
        'Student' => array(
            'id' => '216',
            'last_name' => 'Nipps',
            'first_name' => 'Aaron'
        ),
        'Guardian' => array(
            'guardian_last_name' => 'Nipps',
            'guardian_first_name' => 'Audet',
            'id' => '216',
            ..
        ),
        'Subject' => array(
            'name' => 'English: Year 7 - 10',
            'id' => '9'
        )
    ),
    (int) 2 => array(
        'Student' => array(
            'id' => '216',
            'last_name' => 'Nipps',
            'first_name' => 'Aaron'
        ),
        'Guardian' => array(
            'guardian_last_name' => 'Nipps',
            'guardian_first_name' => 'Audet',
            'id' => '216',
            ..'
        ),
        'Subject' => array(
            'name' => 'Maths: Year 7 - 10',
            'id' => '16'
        )
    ),

CakePHP:如何使分页器组件使用不同的计数?

EDIT
  (int) 1 => array(
            'Student' => array(
                'id' => '216', //Only want ids to appear once and not twice as above, The above example has the id 216 appearing 2 times
                'last_name' => 'Nipps',
                'first_name' => 'Aaron'
            ),
            'Guardian' => array(
                'guardian_last_name' => 'Nipps',
                'guardian_first_name' => 'Audet',
                'id' => '216',
                ..
            ),
            'Subject' => array(
                'name' => 'English: Year 7 - 10',
                'id' => '9'
            )
        ),

我需要添加组,这可以解决问题

 $this->Paginator->settings = array(
         'conditions'=> $condionoptions,
               'fields'=>$fieldoptions,
                'joins'=> $joinoptions,
                'group' => 'Student.id',
                'limit' => 25,
        'recursive' =>-1,
                'order'=> $orderoptions,
               'page'=>1
               ); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM