Мне нужно в ActiveQuery получить все категории у которых есть хотябы один пост. Т.е. чтобы я смог просто получать модели категорий одной строчкой вот так:
Код: Выделить всё
$categories = Category::find()->giveMeNotEmpty()->all();
На чистом SQL я решил эту задачу так:
Код: Выделить всё
SELECT * from category WHERE EXISTS (SELECT * FROM post WHERE post.category_id = category.id)
Пробовал что-то типа такого, но это не работает потому что внутри where так писать нельзя.
Код: Выделить всё
class CategoryQuery extends ActiveQuery
{
public function giveMeNotEmpty()
{
$subQuery = Post::find()->where(['post.category_id' => 'category.id']);
return $this->where(['exists', $subQuery]);
}
}