【发布时间】:2014-09-17 10:50:49
【问题描述】:
我正在使用 Yii 框架,我想做一些搜索过滤,但在某些情况下我得到错误的结果如下:
我有 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);
【问题讨论】:
-
我在这里没有看到任何 SQL。这与 SQL 有什么关系?这看起来像是 Yii 使用他们的模型系统所特有的。
-
criteria->addInCondition()生成一个sql查询为attribute In (1, 2, 3)... -
这是 Yii 或 Yii 使用的 ORM,而不是 SQL。
-
@mawburn 好的,谢谢,但我没有找到合适的标题 :(