我需要从数据库中只获得一个巧合,我使用ClistView小部件来显示多个记录,但我需要它不显示重复。
现在,这是我的控制器/动作
public function actionIndex()
{
$criteria = new CDbCriteria(array(
'condition'=>'host=:id OR users_id=:id',
'params'=>array('id'=>Yii::app()->user->getId()),
));
$dataProvider=new CActiveDataProvider('sigstur', array(
'criteria'=>$criteria
));
$this->render('index',array(
'dataProvider'=>$dataProvider,
));
}
有些记录在host和user_id列上具有相同的值但在其他列中具有不同的数据,这个条件我只是要求显示带有这些参数的记录,但是有太多的重复,如何避免这些重复?< / p>
答案 0 :(得分:1)
我认为你需要解决方案:
1)使用GROUP BY
:
$criteria = new CDbCriteria(array(
'condition' => 'host=:id OR users_id=:id',
'params' => array('id'=>Yii::app()->user->getId()),
'group ' => 'host, users_id',
));
2)使用DISTINCT
:
$criteria = new CDbCriteria(array(
'condition' => 'host=:id OR users_id=:id',
'params' => array('id'=>Yii::app()->user->getId()),
'distinct' => true,
));
如果你解释一下你想避免什么样的重复,我可以在答案中添加更多细节。