mysql - Laravel:根据另一个表中的其他数据选择数据

标签 mysql laravel eloquent query-builder laravel-query-builder

我正在开发公交车站管理系统。我正在尝试在时间表中排队公交车。 所以我想要的是这样的:

  • 我想显示特定车站不在特定时刻表排队的所有公交车。

    - 就像一个车站有 5 辆公交车,那么其中两辆在特定时间表的队列中,我想显示要选择到队列中的所有其他 3 辆公交车。

这是时间表enter image description here

队列表 enter image description here

公交车表

enter image description here

车站表

enter image description here

所以我就这样做了

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 表中的 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();

关于mysql - Laravel:根据另一个表中的其他数据选择数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56516942/

相关文章:

laravel - Laravel 5.4 EloquentUserProvider覆盖validateCredentials

php - 从 Laravel 本地存储中的特定目录中删除文件

mysql - laravel 高级连接 5 个表,其中 2 个表进行比较

Laravel:查询和访问与 where 子句嵌套关系的子对象

php - 语法错误,意外 'mysql_connect' (T_STRING)

mysql - 使用 join 的替代语法

php - 一般错误 : 1366 Incorrect integer value Laravel

PHP并发问题,多个同时请求;互斥体?

mysql - 从一系列年份中选择数字

mysql - 在 UPDATE 查询中插入子查询