为什么在更改条件后不能使用CActiveDataProvider

时间:2013-03-21 09:31:37

标签: php yii cactivedataprovider

此代码可以正常工作:

$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);

此返回空! 这是为什么?

1 个答案:

答案 0 :(得分:3)

由于您要为条件添加条件,因此没有任何结果:生成的SQL将如下所示:WHERE id='1' AND id='2'

如果您想列出用户1和2,请尝试:

$criteria->compare('id', 2, false, 'OR');

或者只使用addInCondition

编辑:正如您在评论中所说,您可以clone it而不是使用相同的条件对象。