0

此代码工作正常:

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

此返回空!为什么是这样?

4

1 回答 1

3

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

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

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

或者干脆使用addInCondition.

编辑:正如您在评论中所说,您可以克隆它,而不是使用相同的标准对象。

于 2013-03-21T09:46:15.303 回答