此代码可以正常工作:
$criteria = new CDbCriteria;
$criteria->compare('id', 1);
$dataProvider = new CActiveDataProvider('User', array('criteria'=>$criteria));
foreach ($dataProvider->getData() as $value) var_dump($value->id);
但是当我在创建CActiveDataProvider实例后更改条件时,这不起作用:
$criteria = new CDbCriteria;
$criteria->compare('id', 1);
$dataProvider = new CActiveDataProvider('User', array('criteria'=>$criteria));
$criteria->compare('id', 2);
foreach ($dataProvider->getData() as $value) var_dump($value->id);
此返回空! 这是为什么?
答案 0 :(得分:3)
由于您要为条件添加条件,因此没有任何结果:生成的SQL将如下所示:WHERE id='1' AND id='2'
如果您想列出用户1和2,请尝试:
$criteria->compare('id', 2, false, 'OR');
或者只使用addInCondition
。
编辑:正如您在评论中所说,您可以clone it而不是使用相同的条件对象。