Please can someone explain how the search
method in a Yii2 SearchModel
works? I generated it using Gii. Here it is:
public function search($params){
$query = MyModel::find();
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
if (!($this->load($params) && $this->validate())) {
return $dataProvider;
}
$this->addCondition($query, 'att1');
$this->addCondition($query, 'att1', true);
$this->addCondition($query, 'att2');
$this->addCondition($query, 'att2', true);
return $dataProvider;
}
This is how I call it:
$search = new MyModelSearch();
$myModels = $search->search(['att3' => '3']);
Regardless of what attributes I use in calling search
, I always get back the same result - i.e. all the entries in the table. I'm missing something here that I just do not understand.
Any help would be really appreciated. Thanks.
If you want some additional param to pass to search() method, you can change search method like this in SomeSearch.php:
and inside controller:
The
search()
function generated by Gii useActiveRecord::load()
to set search parameters :So you should try :
Or
And of course add a condition on
att3
attribute insearch()
function :But if you really want to use
$myModels = $search->search(['att3' => '3']);
then you should simply replace$this->load($params)
with$this->load($params, '')
.