Ich bin neu bei yii2. Ich habe die Dokumentation und einige Antworten auf SOF gelesen, aber ich kann noch nicht mit Beziehungen in yii2 arbeiten. Ich bin in der Lage, raw mysql-Abfrage für das Problem zu erstellen, aber ich weiß nicht, wie Sie die gleiche Abfrage mit yii2 Beziehungen erstellen. Ich bin verwirrt mit Via, JoinWith und einigen Schlüsselkonzepten. Ich werde das Problem so anschaulich wie möglich machen. Ich habe vier Modelle.Yii2 Join Beziehungen für mehrere Tabellen
Category, CategoryNews, NewsTags, Tags
category table - cat_id, cat_name
news_category table - nc_id, nc_cat_id, nc_news_id
news_tags table - nt_id, nt_news_id, nt_tag_id
tags table - tag_id, tag_name
Was ich brauche, ist Tags Modellobjekt für jede Kategorie, die für jede Kategorie ich brauche ist es, alle Nachrichten-Tags zu dieser Kategorie gehören. Die Anfrage stammt von gridview. Die erzeugten Beziehungen sind:
Category Model:
public function getNewsCategory()
{
return $this->hasMany(NewsCategory::className(), ['nc_cat_id' => 'cat_id']);
}
NewsCategory Model:
public function getNcNews()
{
return $this->hasOne(News::className(), ['news_id' => 'nc_news_id']);
}
public function getNcCat()
{
return $this->hasOne(Category::className(), ['cat_id' => 'nc_cat_id']);
}
NewsTags Model:
public function getNtNews()
{
return $this->hasOne(News::className(), ['news_id' => 'nt_news_id']);
}
public function getNtTag()
{
return $this->hasOne(Tags::className(), ['tag_id' => 'nt_tag_id']);
}
News Model:
public function getNewsCategory()
{
return $this->hasMany(NewsCategory::className(), ['nc_news_id' => 'news_id']);
}
public function getNewsTags()
{
return $this->hasMany(NewsTags::className(), ['nt_news_id' => 'news_id']);
}
Tags Model:
public function getNewsTags()
{
return $this->hasMany(NewsTags::className(), ['nt_tag_id' => 'tag_id']);
}
dh. Jede Kategorie enthält mehrere Nachrichten und jede Nachricht enthält mehrere Tags und ich brauche alle Tags für jede Kategorie. Genauer gesagt, in der Gridview brauche ich alle Kategorien und eine Spalte mit allen Tags zu diesen Kategorien. Bitte helfen Sie !!