Laravel 5.3 Eloquent Join таблица с несколькими условными соединениями, имеющими количество

У меня есть вопрос о левой таблице соединений, которая использует счетчик для выбора основной таблицы, которая будет отображаться с условием, описанным ниже:

select  b.id, b.location_name, b.box_identity
from    box b
left join device d on b.id = d.box_id
and d.deleted_at is null
group by b.id, b.location_name, b.box_identity
having count(d.*) < COALESCE(b.device_slot, 3)
order by b.id desc

я пытался использовать красноречивый код, как это, но DB :: raw не работает в функции $ join

$boxes = Box::leftJoin('device', function($join) {
$join->on('box.id', '=', 'device.box_id');
$join->on(DB::raw('device.deleted_at is null'));
})
->select('box.id', 'box.box_identity', 'box.location_name')
->groupBy('box.id', 'box.box_identity', 'box.location_name')
->havingRaw('COUNT(device.*) < COALESCE(box.device_slot, 3)')
->orderBy('box.id', 'desc')
->get();

Как я могу выполнить этот запрос, используя laravel eloquent? Заранее спасибо!

1

Решение

использовать этот :

$boxes = Box::leftJoin('device', function($join) {
$join->on('box.id', '=', 'device.box_id');
$join->whereRaw('device.deleted_at is null');
})
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]