代码运行正常:
$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);
返回空!为什么会这样?
您没有任何结果,因为您正在向您的标准添加条件:生成的SQL将看起来像这样:WHERE id='1' AND id='2'
如果你想列出用户1和2,你应该尝试:
$criteria->compare('id', 2, false, 'OR');
或者直接使用addInCondition
。
EDIT:正如您在评论中所说,您可以克隆它,而不是使用相同的标准对象。