есть запрос на mysql
SELECT *
FROM `rooms`
WHERE `hotel_id` = $hotel_id
WHERE `people` = $people
WHERE `id` NOT IN (
SELECT `room_id`
FROM `orders`
WHERE `hotel_id` = $hotel_id
WHERE `date_from` < $date_to AND `date_to` > $date_from
как записать его в ларавел?
пробую так, но какой-то бред
$hotel_id = $request->hotel_id;
$rooms = DB::table('rooms')
->where('hotel_id','=', $request->hotel_id)
->where('people','>=', $request->people)
->whereNotIn('id',function($query,$hotel_id,$to,$from) {
$query->select('room_id')->from('orders')
->where('hotel_id','=', $hotel_id)
->where('date_from','<', $to)
->where('date_to','<', $from);
})
->orderBy('rooms.id', 'asc')->get();
Можно сделать через subquery
$users = DB::table('rooms')
->where('hotel_id', '=', $hotel_id)
->where('people', '=', $people)
->whereNotIn('id', DB::table('orders')
->select('room_id')
->where('hotel_id', '=', $hotel_id)
->where('date_from','<', $to)
->where('date_to','>', $from);
)
->get();
Сборка персонального компьютера от Artline: умный выбор для современных пользователей