Driver86
@Driver86
Немодератор toster.ru

Как в ActiveDataProvider передать связь?

В модели тегов есть связь со статьями через промежуточную таблицу:

public function getArticles()
{
    return $this->hasMany(Article::className(), ['id' => 'articleId'])->viaTable(Relation::tableName(), ['tagId' => 'id']);
}


В контролёре в экшене получаю тег. Как мне эту связь со статьями передать в ActiveDataProvider?!

public function actionTag($tagSlug)
{
    $tag = Tag::find()->where(['slug' => $tagSlug])->one();
    $articles = Article::find()->???; // как тут быть???
    $provider = new ActiveDataProvider([
        'query' => $articles,
    ]);
}
  • Вопрос задан
  • 175 просмотров
Решения вопроса 2
@masterfreelance
программист со стажем
Вам нужно получить все статьи с тегом $tagSlug?
Может так:
public function actionTag($tagSlug)
{
    $tag = Tag::find()->where(['slug' => $tagSlug])->one()->getArticles();
    $provider = new ActiveDataProvider([
        'query' => $tag,
    ]);
}
Ответ написан
Комментировать
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Вам нужна связь в Article. И далее:
$articles = Article::find()->with('имя_связи')
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы