具有多个AND/ or的条件-运算符优先级


Yii Condition with multiple AND/ORs - Operator Precedence

这里需要修改什么才能获得一个工作的选择语句?

更新关于Jon的回应。

<?php echo $form->dropDownList($model, 'GroupId', GxHtml::listDataEx(Group::model()
               ->findAll(array(
                    'condition'=>'SC=:stat AND Pri=:pri AND Type=:typ OR Type=:typ2 OR Type=:typ3', 
                    'params'=>array(':stat'=>'A', ':pri'=>'Y', ':typ'=>'A', ':typ2'=>'B', ':typ3'=>'C')),
                    'GroupId', 'Name')); 
?>

让步:

system.db.CDbCommand.query
    (SELECT * FROM `group` `t` 
    WHERE SC=:stat AND Pri=:pri AND Type!=:typ 
    OR Type!=:typ2 OR Type!=:typ3. 
    Bound with :stat='A', :pri='Y', :typ='A', :typ2='B', :typ3='C')

这里的问题是没有考虑到所有的事情。我可以在Yii代码中添加运算符优先级吗?

我认为您可以简单地使用括号来获得您需要的操作符优先级。

你可能用错了操作符。

考虑如果typ == 'A'typ2 == 'B',则

type != 'A' OR type != 'B'
无论type是什么,

都是true。您可能想要这样:

'condition'=>'SC=:stat AND Pri=:pri AND Type!=:typ AND Type!=:typ2 AND Type!=:typ3', 

除此之外,如果出现问题,您可以简单地添加父级来修复优先级。