Запрос отношения многие ко многим в Yii2 - PullRequest
0 голосов
/ 27 декабря 2018
SELECT c.* 
from content c 
inner join contentTags ct on c.id = ct.content 
inner join tags t on ct.tag = c.id 
where t.id = 1

Как написать запрос выше в Yii 2, используя методы ActiveQueryInterface

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

Если вы используете ActiveRecords, вы можете создать такое отношение в классе Content:

public function getTags()
{
    return $this->hasMany(Tag::className(), ['id' => 'tag'])
                    ->viaTable('contentTags', ['content' => 'id']);
}
0 голосов
/ 27 декабря 2018

Использование AcitveQuery и innerJoin ()

$data = (new \yii\db\Query())
    ->select('c.*')
    ->from('content c')
    ->innerJoin('contentTags ct', 'c.id = ct.content')
    ->innerJoin('tags t', 'ct.tag = c.id')
    ->where(['t.id' => 1])
    ->all();
...