Laravel |检索具有关系且特定ID除外的集合

时间:2019-01-23 21:23:08

标签: php laravel

我正在为租车预订系统工作 所以我的计划是当客户搜索所选汽车型号中是否有可用汽车时, 首先:获取客户选择日期的汽车编号 第二:获得除不可用的汽车以外的所有汽车,

$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); 获得所有有关系的汽车,除了没有可用的汽车

1 个答案:

答案 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);