Laravel: select 数据基于另一个 table 中的其他数据

Laravel: select data based on other data in another table

我正在研究公交车站管理系统。我正在尝试按时间表排队。 所以我想要的是:

这里是时间表table

队列表

公交车Table

站Table

所以我这样做了

public function getBusQueue(Request $request)
{
    $id = $request->id; // id of the targert schedule

    // getting the target station id;
    $schedule = Schedule::find($id);
    $stations_id = $schedule->station_id;

    // getting the buses that are not in queues table
    $buses = DB::table("buses")->select('*')
                ->whereNotIn('bus_number',function($query) {
                    $query->select('bus_number')->from('queues');
                })
                ->where('Schedule_id', $id)
                ->where('station_id', $stations_id)
                ->get();

    $data = $buses;  
    return Response()->json($data);
}

如果我没理解错的话,这个查询中的相关时刻表是队列的,不是公交车的。

(此外,您似乎在 buses table 中输入了错误的 schedule_id 列名称。它当前名为 schedual_id 。)

尝试将查询更改为以下内容:

$buses = DB::table("buses")->select('*')
    ->whereNotIn('bus_number',function($query) use($id) {
        $query->select('bus_number')
            ->from('queues')
            ->where('schedule_id', $id);
    })
    ->where('station_id', $stations_id)
    ->get();