如何在yii2中使用search()函数来搜索多个条件?

时间:2016-02-10 14:09:52

标签: yii2 yii2-advanced-app yii2-basic-app

在yii2的控制器中,我有以下内容:

$searchModel = new HealthSearch();
$dataProvider = $searchModel->search(['HealthSearch'=>['zip'=>$zipcode]]);

有效,但我希望它也能搜索zipcodes和专业

我试过了:

$dataProvider = $searchModel->search(['HealthSearch'=>['zip'=>$zipcode,'pri_spec'=>$sspec']]);

但这不起作用?什么是正确的搜索方式?

1 个答案:

答案 0 :(得分:0)

删除最后一个引用的'。你的代码应该工作正常。更易于阅读的版本可能如下所示:

$searchByAttr['HealthSearch'] = [
    'zip' => $zipcode,
    'pri_spec' => $sspec
];

$dataProvider = $searchModel->search($searchByAttr);

此外,您需要检查首先负责进行搜索的HealthSearch班级。 Gii 会从您的模型中生成一个主要的样板文件,需要在后续步骤中对您的应用进行调整。默认情况下,HealthSearch::search()方法应按所有模型的安全属性进行过滤,并且作为任何ActiveRecord类,它还具有返回这些安全属性的rules()方法。因此,如果zippri_spec未包含在该数组中,则会被忽略。