我想在搜索功能
上使用 CDbCriteria 在我的模型上实现此查询这是查询
select t.*
from transaksi t, stock_cabang sc, cabang c
where t.id_stock_cabang = sc.id
and sc.id_cabang = c.id and c.id =1;
这是我的功能
public function search() {
// @todo Please modify the following code to remove attributes that should not be searched.
$criteria = new CDbCriteria;
$criteria->compare('id', $this->id);
$criteria->compare('jumlah_masuk', $this->jumlah_masuk);
$criteria->compare('id_user', $this->id_user);
$criteria->compare('id_stock_cabang', $this->id_stock_cabang);
$criteria->compare('waktu', $this->waktu, true);
return new CActiveDataProvider($this, array(
'criteria' => $criteria,
));
}
请帮助我...
答案 0 :(得分:4)
这是使用3个表的示例代码。
$criteria=new CDbCriteria;
$criteria->with = array(
'Table1' => array('alias'=> 't1', 'together' => true, ),
'Table2' => array('alias'=> 't2', 'together' => true, ),
);
$criteria->together = true;
$UserProduct = UserProduct::model()->find($criteria);
此处alias
是可选的。
可以添加更多选项,例如
# GET THE FRIENDS OF CURRECT PROFILE
$criteria=new CDbCriteria;
$criteria->with = array(
'Relation1' => array('alias'=> 'r1', 'together' => true,
'select' => array('r1.user_id', 'r1.relator_id', 'relation',) ),
'Relation2' => array('alias'=> 'r2', 'together' => true,
'select' => array('r2.relator_id', 'r2.user_id', 'relation',) ),
);
$criteria->addCondition('( r1.user_id = "'.$fId.'" OR r2.relator_id = "'.$fId.'" ) AND t.id = "'.$fId.'" AND
( r1.relation != "2" AND r2.relation != "2" ) ');
$criteria->together = true;
$userFriends = User::model()->find($criteria);
答案 1 :(得分:0)
首先,我建议你使用模型之间的关系,例如为每个表创建一个模型,然后使用BELONGS_TO关系,这可以解决你的问题,
另一个解决方案可能是使用JOIN parameter并加入其他表, 你可以在这里找到一些similliar解决方案:Yii: working with multiple tables
祝你好运!抱歉,如果我有语言错误