制作一个Laravel项目,使人们可以保留1.5小时的某些产品。

在我的控制器中,我正在查询一个已经保留的时隙变量。

接下来,我想从可用时隙中撤出那些时隙。

$filteredTimeSlots = DB::table('timeslots')
        ->join('reservations', 'timeslots.id', '=', 'reservations.timeslot_id')
        ->where('product_id', $product->id)
        ->get();

    $timeslots = Timeslot::all();


现在,$timeslots保存所有时隙。但是这里也是在$filteredTimeSlots中指定的那些插槽。

总共我有6个产品。每个可以在相同的时隙保留。这就是为什么我添加了“ where”语句。

这可能是一个简单的修复,但似乎无法在Laravel文档中找到明确的解决方案。

提前致谢。

最佳答案

要查找剩余的插槽,您要使用尚未填充插槽的左连接:

$timeslotsRemaining = DB::table('timeslots')
    ->leftJoin('reservations', 'timeslots.id', '=', 'reservations.timeslot_id')
    ->whereNull('reservations.timeslot_id')
    ->get();

09-15 17:20