2011-11-08 20 views
2

CDbCriteriaを使用してDBを調べるときにビット単位の演算を使用しようとしていますが、運がないわけではありません。 ::compare docのビット演算子で何も見つかりません。私はこのようなものを探しています:CDbCriteriaのYiiビット演算

//有効期限が切れていないユーザーしか取得できません。

$criteria = new CDbCriteria; 
$criteria->compare('flags','& ' . self::USER_EXPIRED . ' = 0',true); 

これは機能しませんが、使用する必要がある別の機能はありますか?

答えて

1

addCondition() insted of compare()を試してみましたか? (それをテストしていないが)、私はこのような何かが動作するはず想像:

好奇心のうち
$criteria = new CDbCriteria; 
$criteria->addCondition('flags & ' . self::USER_EXPIRED . ' = 0'); 

:なぜあなたはビットで、このような情報を表しているのですか? enum値( 'yes'、 'no')付きの専用カラム(有効期限切れ)を使用すると、コードがより読みやすくメンテナンス可能になります。