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 に答える