Подскажите, пожалуйста как следующее можно сделать более правильно/проще?
Есть три таблицы:
1. articles (id|title|etc...)
2. tag (id|tag|etc...)
3. tag_articles (id|article_id|tag_id)
В articles есть связь:
Код: Выделить всё
public function getTagArticles()
{
return $this->hasMany(TagArticle::class, ['article_id' => 'id']);
}
public function getCurrentTags()
{
return $this->hasMany(Tag::class, ['id' => 'tag_id'])
->via('tagArticles');
}
В GridView есть аттрибут searchTag в фильтре которого массив с тегами вида
Код: Выделить всё
['id' => 'tag']
Код: Выделить всё
$query->joinWith('tagArticles')->filterWhere(['tag_id' => $this->searchTag]);
Всем спасибо за советы.