先の投稿にも書きましたが、
select id from hoge where status=1 and created>'2012-12-12' order by id limit 5;
のようなSQLを発行したい場合は、
$criteria = new CDbCriteria; $criteria->select='id'; $criteria->order='id'; $criteria->limit=5; $criteria->compare('status','1'); $criteria->compare('created','>2012-12-12'); $datas=$this->findAll($criteria);
のようにすると$datasにデータを取得することができますが、CActiveDataProvider経由でデータを取得したい場合、
$criteria = new CDbCriteria; $criteria->select='id'; $criteria->order='id'; $criteria->limit=5; $criteria->compare('status','1'); $criteria->compare('created','>2012-12-12'); $dataProvider=new CActiveDataProvider(get_class($this), array( 'criteria' => $criteria, ));
のようにしてもorderとlimitがCActiveDataProviderには渡りません。
CActiveDataProviderでorderやlimitを利用する場合は、
$criteria = new CDbCriteria; $criteria->select='id'; $criteria->compare('status','1'); $criteria->compare('created','>2012-12-12'); $dataProvider=new CActiveDataProvider(get_class($this), array( 'criteria' => $criteria, 'sort' => array( 'defaultOrder' => 'id', ), 'pagination' => array( 'pageSize' => 5, ), ));
のようにする必要があります。