有一张桌子"公寓".这是需要在Yii中创建查询.怎么做?
SQL查询:
SELECT *
FROM {{apartments}}
WHERE agent_id = 4
UNION
SELECT *
FROM {{apartments}}
WHERE agent_id != 4
Run Code Online (Sandbox Code Playgroud)
在我的cintroller
$arrSql[] = 'SELECT * FROM {{apartments}} WHERE agent_id=:agent_id';
$arrSql[] = 'SELECT * FROM {{apartments}} WHERE agent_id!=:agent_id';
$data = Apartments::model()->findAllBySql(implode(' UNION ', $arrSql), array(
':agent_id' => Yii::app()->user->id,
':status' => Apartments::STATUS_REMOVED
));
$dataProvider = new CArrayDataProvider($data);
Run Code Online (Sandbox Code Playgroud)
但不是在我的小部件CGridList中工作分页和过滤.
据我所知,你可以这样使用CDbCommand:
$apartments2 = Yii::app()->db->createCommand()
->select("*")
->from('apartments')
->where('agent_id!=:agent_id', array(':agent_id'=>4))
->getText();
$apartments = Yii::app()->db->createCommand()
->select("*")
->from('apartments')
->where('agent_id=:agent_id', array(':agent_id'=>4))
->union($apartments2)
->queryRow();
Run Code Online (Sandbox Code Playgroud)
你可以在$apartments数组中找到你的结果.
编辑:
如果要使用CActiveDataProvider,则需要使用CSqlDataProvider:
$sql='SELECT *
FROM {{apartments}}
WHERE agent_id = 4
UNION
SELECT *
FROM {{apartments}}
WHERE agent_id != 4';
$dataProvider=new CSqlDataProvider($sql, array(
'totalItemCount'=>$count,
'sort'=>array(
'attributes'=>array(
'agent_id', //and all other atributes with withc you want to sort
),
),
'pagination'=>array(
'pageSize'=>10,
),
));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8504 次 |
| 最近记录: |