首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >addColumnCondition在CDbCriteria中的结合

addColumnCondition在CDbCriteria中的结合
EN

Stack Overflow用户
提问于 2012-12-17 04:55:32
回答 2查看 2K关注 0票数 1

我的GridView中有几个下拉过滤器,在我的模型的搜索部分有:

代码语言:javascript
复制
if ($this->agent_primary != "") {
    $criteria->addColumnCondition(array('agent_type_id'=>1, 'agent.agent_id'=>$this->agent_primary));
}

if ($this->agent_voice != "") {
    $criteria->addColumnCondition(array('agent_type_id'=>2, 'agent.agent_id'=>$this->agent_voice));
}

if ($this->agent_commercial != "") {
    $criteria->addColumnCondition(array('agent_type_id'=>3, 'agent.agent_id'=>$this->agent_commercial));
}

我需要以某种方式将其结合起来,这样,如果有人选择了三个下拉列表中的两个(或全部三个),他们就会得到正确的结果,目前sql在每个addColumnCondition的方括号中都有:

其中(condition1a =a和condition1b = b)和(condition2a =a和condition2b = b)

而不是

其中(condition1a =a和condition1b = b) OR (condition2a =a和condition2b = b)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-17 05:20:24

您可以简单地使用第三个参数addColumnCondition,将其设置为'OR'

代码语言:javascript
复制
if ($this->agent_primary != "") {
    $criteria->addColumnCondition(array('agent_type_id'=>1, 'agent.agent_id'=>$this->agent_primary),'AND','OR');
}

你会得到:

代码语言:javascript
复制
WHERE (agent_type = 1 AND agent.agent_id = X) OR (condition2a = a AND condition2b = b)
票数 2
EN

Stack Overflow用户

发布于 2012-12-17 05:00:24

使用addCondition函数,在这里添加条件,$criteriaStr;因为您需要在这里构建字符串,并在这里使用它。

代码语言:javascript
复制
$criteriaStr = "";
if ($this->agent_primary != "") {
    $criteriaStr .= '(agent_type_id=1 AND agent.agent_id='.$this->agent_primary.')';
}

if ($this->agent_voice != "") {
    if($criteriaStr !== '' ) { $criteriaStr .= ' OR '; }

    $criteriaStr .= '(agent_type_id=2 AND agent.agent_id='.$this->agent_voice.')';
}

if ($this->agent_commercial != "") {
    if($criteriaStr !== '' ) { $criteriaStr .= ' OR '; }

    $criteriaStr .= '(agent_type_id=3 AND agent.agent_id='.$this->agent_commercial.')';
}

$criteria->addCondition($criteriaStr); 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13908460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档