@Don_Malus

Взаимная связь has many через третью таблицу. В одну сторону могу вытащить инфу, а в другую — нет. Почему?

Классика: Статьи и тэги, связаны через третью таблицу.
$article->tags показывает все без проблем, а вот $tag->articles выдает либо ноль, либо ошибку: Getting unknown property: yii\db\ActiveQuery::articles

Связь из модели Тэгов:

public function getArticles()
{
return $this->hasMany(Article::className(), ['article_id' => 'id'])
->viaTable('article_tag', ['id' => 'tag_id']);
}

Связь из модели Статей

public function getTags()
{
return $this->hasMany(Tag::className(), ['id' => 'tag_id'])
->viaTable('article_tag', ['article_id' => 'id']);
}

Экшн поиска по тэгам, который выдает ошибку
public function actionSearchtag()
{
// Разбираем запрос
$search = Yii::$app->request->get('search');

// Обрезаем пробелы
$search = str_replace(' ', '', $search);
// Поисковый запрос с поиском и обрезанием пробелов
$tag = Tag::find()->where(['like', 'replace(title, " ", "")', $search]);
$articles = $tag->articles; // вот на эту строчку ругается

...
}

Документацию по связям проштудировал, везде говорится, что такой зависимости достаточно для подобного обращения. Не пойму я дурак или лыжи не едут. Заранее спасибо.
  • Вопрос задан
  • 46 просмотров
Решения вопроса 1
@Kulay
public function getArticles()
{
return $this->hasMany(Article::className(), ['id' => 'article_id'])
->viaTable('article_tag', ['tag_id' => 'id']);
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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