如何比较Yii中使用CDBCRITERIA的字符串?

时间:2014-07-25 14:32:53

标签: php checkbox yii criteria

我正在使用Yii框架,我想做一些搜索过滤,但在某些情况下我得到的结果如下:

我有2个复选框:加拿大和美国,如果我查看加拿大,我将只收到与加拿大相关的所有结果,而如果我检查美国,我将获得数据库中的所有结果,无论它与联合国有关状态与否,这个错误是绝对发生的,因为美国字符串是2部分所以它需要在引用中。这是我的代码:

视图页面:

 echo '<div class="checkbox"><label>'.
       CHtml::checkBox($m2->tag, false, array('value'=>"$m2->tag")).$m2->tag              
       .'</label></div>';

控制器:

$c = new CDbCriteria();
        $c->order = "idJob DESC";
            $model = Jobs::model()->findAll($c);
            $model2 = Tags::model()->findAll();
            $lcr = "";
            $tag="";
            foreach($model2 as $m2){

                if(isset($_POST[$m2->tag])){

                    $tag = $_POST[$m2->tag];                           

                    if($m2->category=='Location')

                        $lcr[]= $tag; 
                }
            }


            if($lcr!="")

                $c->addInCondition('location', $lcr, 'AND');

            $model = Jobs::model()->findAll($c);  

2 个答案:

答案 0 :(得分:1)

好吧,听起来我发现了这个问题的解决方案并且它正常工作,这是解决方案:

在控制器中:

 foreach($model2 as $m2){

            if (strpos($m2->tag, ' ') !== FALSE)
                $m2->tag = str_replace(" ","_",$m2->tag);

                if(isset($_POST["$m2->tag"])){
....

因此,正如您在代码中看到的,如果tag包含任何空格,它将被_替换,而在HTML中,id属性将用{{1}替换空格自动,所以它们现在匹配。

答案 1 :(得分:0)

请检查代码中的以下代码,它将为您提供帮助

$criteria->addSearchCondition('location', 'YOUR SEARCH STRING', false);