2015-07-14 2 views
0

CActiveDataProvider генерации автоматического запроса для подсчета кол общий элемент:Yii CActiveDataProvider генерировать SQL запрос

SELECT COUNT(DISTINCT `t`.`id`) FROM `transaction` `t` LEFT OUTER JOIN `partner` `partner` ON (`t`.`partner_id`=`partner`.`id`) 

Этот запрос является медленным, так как содержат соединения, как я могу установить Мануалы общее количество, и отключить этот автоматический запрос?

ответ

1

Вы можете использовать ручной набор total item count для CActiveDataProvider для предотвращения автоматического расчета.

class Model extends CActiveRecord { 

    public function search(){ 
     $criteria = new CDbCriteria; 
     // your criteria here 
     $data_provider = new CActiveDataProvider($this, array('criteria'=>$criteria)); 
     // replace $this->count($criteria) with your own condition or another criteria 
     $data_provider->setTotalItemCount($this->count($criteria)); 
     return $data_provider; 
    } 
}