У меня есть две переменные: $customers
(которая содержит все строки) и $total
, которая содержит все строки запроса.
Обычно я делаю следующий запрос:
$customers = Customers::select
(
'customer.id',
'customer.name',
'customer.min_tolerance',
DB::raw('(SELECT MAX(tolerance) FROM customers_tolerances WHERE customer_id = customer.id) AS tolerance')
)
->from('customers AS customer')
->whereIn('customer.id', $request->customers);
$total = $customers->count();
$customers = $customers->limit($request->limit)
->offset($request->offset)
->get();
Отлично работает. Я ограничиваю все строки (обычно 20 на страницу) плюс общее количество строк.
Моя проблема в том, что я добавил предложение having
в свой запрос, поэтому теперь он выглядит так:
$customers = Customers::select
(
'customer.id',
'customer.name',
'customer.min_tolerance',
DB::raw('(SELECT MAX(tolerance) FROM customers_tolerances WHERE customer_id = customer.id) AS tolerance')
)
->from('customers AS customer')
->whereIn('customer.id', $request->customers)
->havingRaw('tolerance >= customer.min_tolerance');
И $count
перестал работать, так как он вызывает ошибку:
Столбец не найден: 1054 Неизвестный «допуск» столбца в «имеющем предложении» select count(*) as aggregate from customers as customer having tolerance >= customer.min_tolerance
)
Итак, как я могу использовать count
с предложением having
?