Laravel SQL 查询午夜时间未显示

Laravel SQL query midnight time not showing

我正在做一个班次显示系统,它显示轮渡的班次。我的问题是,如果我不按顺序排列午夜时间,那么查询将跳过午夜时间并显示早晨

示例:-

如果我这样整理数据

  1. 1:30 我是
  2. 6:30 我是
  3. 上午 7:30

然后时间显示正确,但如果时间不正确

  1. 6:30 我是
  2. 上午 7:30
  3. 1:30 我是

然后查询跳过 1:30 am 并直接进入 6:30 显示。

这是我的 laravel SQL 查询:- 如果出发时间大于当前时间,则显示下一个可用时间

         DB::table('ferries')->groupBy('ferry_name')
        ->whereTime('departure_time', '>', Carbon::now()->toTimeString())
        ->whereIn('schedule_type', ['Weekday'])
        ->where('terminal_name', $terminal_name)->get()->all();

结果集本质上是未排序的,您需要添加排序顺序

这将按升序排序 manual

DB::table('ferries')->groupBy('ferry_name')
->whereTime('departure_time', '>', Carbon::now()->toTimeString())
->whereIn('schedule_type', ['Weekday'])
->where('terminal_name',$terminal_name)->orderBy('departure_time')->get()->all()

使用 unique() 而不是 groupBy() 然后 orderBy 工作不知道为什么。

$posts =  DB::table('ferries')->orderBy('departure_time', 'asc')
            ->where('departure_time', '>', Carbon::now()->toTimeString())
            ->whereIn('schedule_type', ['Weekday'])
            ->where('terminal_name', $terminal_name)->get()->unique('ferry_name')->all();