Mysql Laravel:如何显示可用时间段的列表

Mysql Laravel:如何显示可用时间段的列表,mysql,laravel,orm,eloquent,Mysql,Laravel,Orm,Eloquent,制作一个Laravel项目,人们可以在该项目中为1.5小时预订一些产品 在我的控制器中,我正在查询已保留的时隙变量 接下来,我想从可用的时隙中提取这些时隙 $filteredTimeSlots = DB::table('timeslots') ->join('reservations', 'timeslots.id', '=', 'reservations.timeslot_id') ->where('product_id', $product->

制作一个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();

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

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

在stackoverflow上搜索“MySQL可用时隙”时,您没有找到可以转换为laravel代码的MySQL查询?。。此外,当您没有包括示例数据和预期输出时,很难帮助您“为什么我应该为我认为非常简单的SQL查询提供MCVE?”->根据我在网上找到的内容,我认为我必须以某种方式转换一个不在查询中的查询。尝试转换,但似乎没有解决问题:)当您在stackoverflow上搜索“MySQL可用时间段”时,没有找到可以转换为laravel代码的MySQL查询?。。此外,当您没有包括示例数据和预期输出时,很难帮助您“为什么我应该为我认为非常简单的SQL查询提供MCVE?”->根据我在网上找到的内容,我认为我必须以某种方式转换一个不在查询中的查询。尝试转换,但似乎无法解决此问题:)