Не могу понять, как достать из таблицы все посты, в которых есть все нужные мне теги.
Использую следующую конструкцию:
$query = Card::find()->joinWith('tags')->where(['tags.id' => 2])->joinWith('tags t')->where(['t.id' => 1]);
Получаю все карточки, в которых есть
tags.id = 1
и
tags.id =2
. Но так же карточки, в которых есть просто
tags.id = 1
, но без
tags.id = 2
.
Мне нужно найти все карточки, в которых есть и
tags.id = 1
, и
tags.id =2
, но не что-то одно. Где я свернул не туда?
Upd. Модели:
Tags.php
public function getCard()
{
return $this->hasMany(Card::className(), ['id' => 'card_id'])
->viaTable('card_tags', ['tags_id' => 'id']);
}
Card.php
public function getTags()
{
return $this->hasMany(Tags::className(), ['id' => 'tags_id'])
->viaTable('card_tags', ['card_id' => 'id']);
}