Доброго времени суток!
В оф. документации фреймворка Yii2 есть статья Data Widgets, в одной из секций которой описывается, как работает
фильтрация данных. А так же приводится в качестве примера след. код модели PostSearch:
<?php
namespace app\models;
use Yii;
use yii\base\Model;
use yii\data\ActiveDataProvider;
class PostSearch extends Post
{
public function rules()
{
// only fields in rules() are searchable
return [
[['id'], 'integer'],
[['title', 'creation_date'], 'safe'],
];
}
public function scenarios()
{
// bypass scenarios() implementation in the parent class
return Model::scenarios();
}
public function search($params)
{
$query = Post::find();
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
// load the search form data and validate
if (!($this->load($params) && $this->validate())) {
return $dataProvider;
}
// adjust the query by adding the filters
$query->andFilterWhere(['id' => $this->id]);
$query->andFilterWhere(['like', 'title', $this->title])
->andFilterWhere(['like', 'creation_date', $this->creation_date]);
return $dataProvider;
}
}
Но я не могу понять, каким именно образом в переменную
$dataProvider попадают дополнительные настройки фильтрации (
$query->andFilterWhere...), если
$query до этого уже была передана в параметрах
ActiveDataProvider и значение её на тот момент было равным
Post::find()?
Заранее благодарен!