首页 > 解决方案 > Laravel:根据另一个表中的其他数据选择数据

问题描述

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

所以这里是时间表在此处输入图像描述

队列标签 在此处输入图像描述

巴士表

在此处输入图像描述

车站表

在此处输入图像描述

所以我这样做了

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);
}

标签: mysqllaraveleloquentquery-builderlaravel-query-builder

解决方案


如果我理解正确,此查询中的相关时间表是队列的,而不是公共汽车的。

(此外,您似乎schedule_id在表中输入了错误的列名buses。它当前名为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();

推荐阅读