2011-11-08 57 views
2

我试图在使用CDbCriteria查询数据库时使用按位操作,但我没有任何运气;我在::compare doc的位运算符上找不到任何内容。我正在寻找这样的事情:Yii按位操作在CDbCriteria

//只抓住未过期的用户。

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

但是,这是行不通的,是否有一个不同的功能,我需要使用?

回答

1

您是否尝试过使用addCondition() insted的compare()?我想这样的事情应该工作(虽然没有测试过):

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

出于好奇:你为什么代表像这样的位的信息?您可以使用枚举值的专用列(过期)('yes','no'),并且您的代码将更具可读性和可维护性。