laravel - 如何在 laravel 5 上查询出发和到达时间?
问题描述
我试图搜索出发时间和巴士到达时间
我的数据库
id | bus_id | city | time
1 |1 | 1 | 05:00
2 |1 | 2 | 06:00
3 |1 | 3 | 07:00
示例用户选择城市起点 = 1 和城市目的地 = 2
那么我预期的结果是
bus | time departure | time arrival
1 | 05:00 | 06:00
我的查询
$departures = Departure::whereBetween(
'city', [
$request->origin, $request->destination
])
->get();
解决方案
如果特定巴士到达特定城市的时间只有一个记录,您可以试试这个,否则它将返回最大到达时间和最大出发时间。
它将两条记录合并在一起(bus_1到A,bus_1到b),并选择最大时间作为到达时间或出发时间:
$departure_citys = Departure::where('city',$request->origin)
->selectRaw('id,
bus_id,
city,
time AS time_departure,
NULL AS time_arrival');
$arrival_citys = Departure::where('city',$request->destination)
->selectRaw('id,
bus_id,
city,
NULL AS time_departure,
time AS time_arrival');
$departures = $departure_citys->unionAll($arrival_citys);
DB::table(DB::raw("({$departures->toSql()}) AS tr"))
->mergeBindings($departures->getQuery())
->groupBy('city')
->selectRaw('bus_id,
MAX(time_departure) AS time_dept,
MAX(time_arrival) AS time_arvl')->get();
推荐阅读
- node.js - 猫鼬模式引用返回未定义
- python - Python - 二维数组的函数返回
- search - Prolog中的游戏树模对称性
- discord.js - 有没有办法将它编译成更小的代码段?
- javascript - 为使用 Hls.js 管理的 HLS 视频构建音量计
- excel - 如何在不删除原始表格中的公式的情况下将带有公式的表格中的数据复制到另一张表格中?
- python - Django objects.get():精确查找的 QuerySet 值必须限制为使用切片的一个结果
- java - 如何使用 springdoc-openapi-maven-plugin 和 swagger-codegen-maven-plugin 生成客户端代码?
- c# - 为什么在异步数据库层操作中使用 ConfigureAwait(false)?
- android - Google Play 游戏服务应用程序登录卡在白屏上