2016-02-10 38 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未包含在該數組中,它們將被簡單地忽略。

相關問題