UksusoFF
@UksusoFF

Как получить количество элементов в запросе с having?

Подскажите как получить количество элементов в выборке если в запросе присутствует having?
Пробую вот так (упрощенный вариант без кучи фильтров):
public function getListing($page = null, $count = null) {
        $query = User::newQuery();

        $table = User::getTable();

        $query->select("{$table}.*", DB::raw('count(users.id) as images_count'));
        $query->leftJoin('images', 'images.user_id', '=', "{$table}.id");
        $query->havingRaw("images_count >= {$table}.image_limit");

        $queryCount = clone $query;
        $totalCount = $queryCount->distinct("{$table}.id")->count();

        $query->groupBy("{$table}.id");

        if (!is_null($page) && !is_null($count)) {
            $query->skip(($page - 1) * $count);
        };

        if (!is_null($count)) {
            $query->take($count);
        };

        $result = $query->get();

        return [
            $result,
            $totalCount,
        ];
    }

Column not found: 1054 Unknown column 'images_count' in 'having clause' (SQL: select count(*) as aggregate from `users` left join `images` on `images`.`user_id` = `users`.`id` having images_count >= users.image_limit

Без having все работает без проблем и без count выдача выдает то что нужно...
  • Вопрос задан
  • 199 просмотров
Решения вопроса 1
Sanasol
@Sanasol Куратор тега Laravel
нельзя просто так взять и загуглить ошибку
Руками через select() делайте выборку, без count().

При использовании ->count() - весь select автоматически убивается, и соответственно ваш having выдает ошибку.

В ошибке же видно что запрос не такой как вы написали: select count(*) as aggregate
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы