0

私はモデルを持っていますReporter

public function relations() {
    return array(
        'video' => array(self::HAS_MANY, 'Video', 'reporter_id'),
    );
}

メソッドのmysqlクエリがありますReporter->search()

SELECT t.*, COUNT(t1.id) AS 'reports'
FROM reporter AS t
LEFT JOIN video AS t1 ON t.id = t1.reporter_id  
GROUP BY t.id
ORDER BY t.name

CDbCriteriaで使用するという観点からは、どのように記述できCActiveDataProviderますか?

4

1 に答える 1

0

そのクエリを CActiveDataProvider の条件に書き込むには、CDbCriteria から次のプロパティを設定する必要があります。

selectjoingroup、および order

次に、新しい CActiveDataProvider オブジェクトを次のように作成しながら、それらを設定できます。

$dataProvider=new CActiveDataProvider('Reporter', array(
    'criteria'=>array(
        'select'=>'`t`.*, count(`t1`.`id`) as `reports`',
        'join'=>'LEFT JOIN `video` AS `t1` ON `t`.`id` = `t1`.`reporter_id`',
        'group'=>'`t`.`id`',
        'order'=>'`t`.`name`',
    ),
));

CDbCriteria で使用できるプロパティとメソッドの全リストは、次の場所にあります: CDbCriteria クラス リファレンス

于 2012-11-02T09:31:23.140 に答える