Задача: найти релевантные Article для заданной модели статьи, в которых совпадает хотя бы одна Category или List.
Получилось решить только через кучу запросов.
Код: Выделить всё
$categoryIds = new \yii\db\Query())
->select('category_id')
->from("article_category")
->where(['article_id' => $article->primaryKey])
->column();
$relevantByCategory = new \yii\db\Query())
->select('article_id')
->from("article_category")
->where(['category_id' => $categoryIds])
->all();
$listIds = new \yii\db\Query())
->select('list_id')
->from("article_list")
->where(['article_id' => $article->primaryKey])
->column();
$relevantByList = new \yii\db\Query())
->select('article_id')
->from("article_list")
->where(['list_id' => $listIds])
->all();
return Article::find()->where(['id' => ArrayHelper::merge($relevantByCategory, $relevantByList)])->all();
Подскажите красивое решение.