Ответ, помеченный как правильный, технически верен, но ваш код может быть исправлен и улучшен:
$availableVehicles = Vehicle::query()
->join('bookings', function ($join) use ($request){
$selectedStart = Carbon::createFromFormat('d/m/Y H:i', $request['start']);
$selectedEnd = Carbon::createFromFormat('d/m/Y H:i', $request['end']);
$join->on('vehicles.id', '=', 'bookings.vehicle_id')
->where([
['bookings.start', '<',$selectedStart],
['bookings.end', '<', $selectedStart]
])->orWhere([
['bookings.start', '>',$selectedEnd],
['bookings.end', '>', $selectedEnd]
]);
})
->get();
Ваши $bookings
и $vehicles
переменные на данном этапе не имеют значения, если только они используется в коде, который вы не включили.