我有一个带有连接和条件的复杂查询,
我使用 CSqlDataProvider 获取数据
但我还需要连接关系表记录。
比方说,我们有表 A ( products
) 和表 B ( product_modifications
)
我需要列出产品及其修改..
我从表 A 中获取数据,我还需要从表 B
中为表 A 中的每条记录获取一些记录,查询应该从表 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 查询来解决