У меня есть запрос, который работает без последнего предложения where. Но с, не работает. Код:
$worksheets = Worksheet::withoutGlobalScopes()->selectRaw('COUNT(*)')
->whereColumn('worksheets.partner_id', 'partners.id')
->whereHas('tireServiceItems', function($query) {
$query->where('service_type', 'like', 'szerelés%')->orWhere('service_type', 'like', 'javítás%');
})
->where('service_date', '>=', $from)
->where('service_date', '<=', $to)
->when($partnerId, function($query) use ($partnerId) {
$query->where('partner_id', $partnerId);
})
->whereNull('worksheets.deleted_at');
return Partner::select('*')->addSelect(['worksheets_count' => $worksheets])
->where('worksheets_count', '>', 0)->paginate(20)->map(function($item) {
return [
'partner_id' => $item->id,
'partner_name' => $item->name,
'partner_address' => $item->address(),
'worksheets_count' => $item->worksheets_count,
];
})->toArray();
без where('worksheet_count', '>', 0) работает, с получением этой ошибки:
Столбец не найден: 1054 Неизвестный столбец «worksheets_count» в «where clause» (SQL: select count () как совокупность из partners, где worksheets_count> 0) *
Спасибо, если поможете мне :)






вам нужно использовать "имея"
return Partner::select(['*', DB::raw($worksheets.' as worksheets_count')])
->having('worksheets_count', '>', 0)
->paginate(20)
...
вместо
->where('worksheets_count', '>', 0)
и сначала измените на
$worksheets = Worksheet::withoutGlobalScopes()
->whereColumn('worksheets.partner_id', 'partners.id')
->whereHas('tireServiceItems', function($query) {
$query->where('service_type', 'like', 'szerelés%')->orWhere('service_type', 'like', 'javítás%');
})
->where('service_date', '>=', $from)
->where('service_date', '<=', $to)
->when($partnerId, function($query) use ($partnerId) {
$query->where('partner_id', $partnerId);
})
->whereNull('worksheets.deleted_at')
->count();
@LaszloP Обновленный ответ
Снова та же ошибка: Столбец не найден: 1054 Неизвестный столбец «worksheets_count» в «имеющем предложении» (SQL: select count () как агрегат из partners, имеющий worksheets_count> 0) *
@LaszloP Первый запрос не возвращает ответа, поэтому подстановка не сработала. Я заменил первый запрос
Я пробовал, но получил ту же ошибку: Столбец не найден: 1054 Неизвестный столбец «worksheets_count» в «имеющем предложении» (SQL: select count (), что и агрегат от
partnersсworksheets_count> 0) "*