Cactivedataprovider Count Problem

Hi All I have a CActiveDataProvider with a criteria.

I need it to return all records, but it is only returning one.

It looks like the problem is with the count as it is using a distinct.

How do I get it to return all records?


 63     /**

 64      * @return array relational rules.

 65      */

 66     public function relations()

 67     {

 68         // NOTE: you may need to adjust the relation name and the related

 69         // class name for the relations automatically generated below.

 70         return array(

 71             'patientScheduleVisitLookups' => array(self::HAS_MANY, 'PatientScheduleVisitLookup', 'patient_id'),

 72             'user' => array(self::BELONGS_TO, 'Users', 'user_id'),

 73         );

 74     }

 75 

 76     /**

 77      * @return array customized attribute labels (name=>label)

 78      */

 79     public function attributeLabels()

 80     {

 81     }

 82 

 83     /**

 84      * Retrieves a list of models based on the current search/filter conditions.

 85      * @return CActiveDataProvider the data provider that can return the models based on the search/filter conditions.

 86      */

 87     public function searchPeople()

 88     {

 89         $criteria=new CDbCriteria;

 90         $criteria->compare('t.active_state',$this->active_state,true);

 91         $criteria->compare('t.patient_id',$this->patient_id,true);

 92         $criteria->compare('sv.visit_date',$this->appointment_date,true);

 93         $criteria->together = true ;

 94         $criteria->with = array('patientScheduleVisitLookups.scheduleVisits'=>array('joinType'=>'LEFT JOIN'),'user'=>array('jo    inType'=>'LEFT JOIN')); 

 95 

 96         return new CActiveDataProvider($this, array(

 97             'criteria'=>$criteria,

 98             'pagination'=>array('pageSize'=>30),

 99         )); 

100     }   

Sample Query out put.

[sql]

SELECT COUNT(DISTINCT t.id) FROM patients t LEFT OUTER JOIN patient_schedule_visit_lookup patientScheduleVisitLookups ON (patientScheduleVisitLookups.patient_id=t.id) LEFT JOIN schedule_visits scheduleVisits ON (patientScheduleVisitLookups.schedule_visits_id=scheduleVisits.id) LEFT JOIN users user ON (t.user_id=user.id) WHERE (t.patient_id LIKE ‘%1642%’)

[/sql]

[sql]

SELECT t.id AS t0_c0, t.type AS t0_c1, t.active_state AS t0_c2, t.report_haq AS t0_c3, t.report_radai AS t0_c4, t.report_past AS t0_c5, t.patient_id AS t0_c6, t.user_id AS t0_c7, user.id AS t3_c0, user.email AS t3_c1, user.email_hash AS t3_c2, user.password AS t3_c3, user.user_title AS t3_c4, user.first_name AS t3_c5, user.last_name AS t3_c6, user.phone_home AS t3_c7, user.phone_mobile AS t3_c8, user.fax AS t3_c9, user.dob AS t3_c10, user.active_state AS t3_c11, user.user_name AS t3_c12, user.no_email AS t3_c13 FROM patients t LEFT JOIN users user ON (t.user_id=user.id) WHERE (t.patient_id LIKE ‘%1642%’) LIMIT 30[/sql]

You might have bumped on this problem.