Ситуация такая, есть таблица статей, таблица тегов и таблица связей (id статьи, id тега).
Задача такая, нужно показать все статьи конкретного тега (к примеру, все статьи тега friends).
Экшин всех статей в контроллере:public function actionArticles($tag = false)
{
// Проверяем права доступа
if (!Yii::$app->user->checkAccess('backend.blog.articles.view')) {
throw new HttpException(403, Yii::t('app', 'У Вас нет прав для работы с данным разделом!'));
}
$searchModel = new BlogSearch;
$dataProvider = $searchModel->search($_GET, $tag);
return $this->render('articles', [
'dataProvider' => $dataProvider,
'searchModel' => $searchModel,
]);
}
Поисковая модель public function search($params, $tag = false)
{
$query = Blog::find()->orderBy(['report' => SORT_DESC, 'date_create' => SORT_DESC ]);
$dataProvider = new ActiveDataProvider([
'query' => $query,
'pagination' => [
'pageSize' => Yii::$app->getModule('blog')->recordsPerPage
]
]);
if (!($this->load($params) && $this->validate())) {
return $dataProvider;
}
$this->addCondition($query, 'name', true);
$this->addCondition($query, 'comm', true);
$this->addCondition($query, 'rating', true);
$this->addCondition($query, 'status', true);
$this->addCondition($query, 'report', true);
$this->addCondition($query, 'draft', true);
$this->addWithCondition($query, 'user', 'user', User::tableName() . '.username', true);
return $dataProvider;
}
protected function addCondition($query, $attribute, $partialMatch = false)
{
$value = $this->$attribute;
if (trim($value) === '') {
return;
}
if ($partialMatch) {
$query->andWhere(['like', $attribute, $value]);
} else {
$query->andWhere([$attribute => $value]);
}
}
Какие вообще идеи будут при таком раскладе достать все записи тега friends ?