2016-02-10 24 views
0

在我yii2控制器我有以下几点:如何使用yii2中的search()函数来搜索多个条件?

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

其作品,但我想它也搜索邮编和特种

我想:

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

但也不不行?什么是正确的搜索方式?

+0

你有一个PHP语法错误。删除最后一个'''。 –

+0

向我们显示您的搜索示例代码 – soju

+0

除了错字,代码看起来正确。您通常不会自己创建该数组,它来自HTTP请求:'$ dataProvider = $ searchModel-> search(Yii :: $ app-> request-> queryParams)''。 – Beowulfenator

回答

0

删除最后一个单引号'后。你的代码应该工作正常。一种更容易阅读的版本可能看起来像:

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

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

你也需要检查HealthSearch类,这是第一责任使该搜索。 Gii从您的模型生成主要样板,需要在后续步骤中对您的应用进行调整。默认情况下,HealthSearch::search()方法应该按照所有模型的安全属性进行过滤,并且与其他ActiveRecord类一样,它也有一个返回那些安全属性的方法。因此,如果zippri_spec未包含在该数组中,它们将被简单地忽略。

相关问题