/**
* Creates data provider instance with search query applied
*
* @param array $params
*
* @return ActiveDataProvider
*/
public function search($params)
{
$query = TopTag::find();
$topTagTable = TopTag::tableName();
$tagTable = Tag::tableName();
$query->joinWith(['tag' => function ($query) use($tagTable) {
$query->from(['tag' => $tagTable]);
}]);
$dataProvider = new ActiveDataProvider(['query' => $query, 'pagination' => ['pageSize' => 10]]);
// enable sorting for the related columns
$addSortAttributes = ["tag.name"];
foreach ($addSortAttributes as $addSortAttribute) {
$dataProvider->sort->attributes[$addSortAttribute] = ['asc' => [$addSortAttribute => SORT_ASC], 'desc' => [$addSortAttribute => SORT_DESC]];
}
if (!($this->load($params) && $this->validate())) {
return $dataProvider;
}
$query->andFilterWhere(['id' => $this->id, 'tag_id' => $this->tag_id]);
$query->andFilterWhere(['like', 'tag.name', $this->getAttribute('tag.name')]);
return $dataProvider;
}