我正在为租车预订系统工作 所以我的计划是当客户搜索所选汽车型号中是否有可用汽车时, 首先:获取客户选择日期的汽车编号 第二:获得除不可用的汽车以外的所有汽车,
$collection = Booking::whereDate('dropoffday', '>' ,$date1)
->whereDate('pickupday' ,'<', $date2)
->get(['car_id'])
;
if ($collection->isEmpty()) {
$cars = Car::with('marques.images')->get();
return Response::json($cars);
}
$taken = [];
foreach ($collection as $car) {
$id = $car->car_id;
array_push($taken,$id);
}
$cars = Car::with('marque.images')->except($taken);
return Response::json($cars);
}
我该如何重写这一行 $ cars = Car :: with('marque.images')-> except($ available); 获得所有有关系的汽车,除了没有可用的汽车
答案 0 :(得分:2)
如果您的关系建立正确,则可以使用whereDoesntHave
方法,如下所示:
$cars = Car::with('marque.images')->whereDoesntHave('bookings', function ($query) use ($date1, $date2) {
$query->whereDate('dropoffday', '>' ,$date1)
->whereDate('pickupday' ,'<', $date2);
})->get();
return Response::json($cars);