結合と条件を含む複雑なクエリがあり
、CSqlDataProvider でデータを取得していますが、
リレーショナル テーブル レコードも結合する必要があります。
たとえば、テーブル A ( products
) とテーブル B ( product_modifications
)
があるとします。製品とその変更を一覧表示する必要があります。
テーブルAからデータを取得し、テーブルA
の各レコードに対してテーブルBからいくつかのレコードを取得する必要があります.クエリはテーブルBから配列を取得する必要があります.
基本コード:
class Product extends CActiveRecord
{
//some code
public function relations()
{
return array(
'modifications' => array(self::HAS_MANY, 'Modification', 'modification_product_id'),
);
}
//some code
}
私の質問
$sql = Yii::app()->db->createCommand();
...//different joins and conditions
$this->dataProvider = new CSqlDataProvider($sql->text, array(
'keyField' => 'product_id',
'pagination' => array('pageSize' => 20),
));
テーブル B ( ) のレコードを結合するにはどうすればよいproduct_modifications
ですか? そのCActiveDataProvider
ように:
$this->dataProvider = new CActiveDataProvider ('products', array(
'pagination' => array('pageSize' => 20),
'criteria' => array(
'with' => array(
'modifications' => array('condition' => 'some condition',),
),
),
));
しかし、私はこれを行う方法がわかりませんCSqlDataProvider
UPD : クエリを対応する CActiveDataProvider クエリに変換することで解決