Yii2, как сделать выбор всех статей конкретного тега?

Ситуация такая, есть таблица статей, таблица тегов и таблица связей (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 ?
  • Вопрос задан
  • 4578 просмотров
Решения вопроса 1
metamorph
@metamorph
В чем проблема-то?
Sql-документация - по вопросам работы с MANY-TO-MANY
Yii2-документация - по вопросам работы с RAR (via, viaTable, hasMany, joinWith)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы