2011-11-08 82 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'),並且您的代碼將更具可讀性和可維護性。