gpt4 book ai didi

mysql - Laravel Eloquent WhereHas 与 ORDER 列

转载 作者:行者123 更新时间:2023-12-04 17:28:02 34 4
gpt4 key购买 nike

我有一个从数据透视表获取数据的 whereHas 查询。但是在数据透视表上,我还有一个名为“order”的额外列,我使用此列来确保项目以正确的 SEQUENCE 顺序排序,因为它代表了一条公交路线。例如:公共(public)汽车/渡轮停在 1 2 3 4 5 6。

我们有一个出发点和目的地点,表示为“port_id”。

例如,下面的查询为我提供了正确的数据,但我需要确保“订单”列始终根据出发港口 ID 和到达港口 ID 以正确的顺序排列。因此,如果您要搜索 port_id 14 到 port_id 15,它不应返回任何结果,因为“order”列没有以这种方式连接它们。

这是我试过的:

        $routes = Route::whereHas('ports', function($query) use ($request) {
$query->where('port_id', $request->route['from']['id']);
})
->whereHas('ports', function($query) use ($request) {
$query->where('port_id', $request->route['to']['id']);
})->get();

这是数据透视表: enter image description here

这是路由表: enter image description here

谢谢。

最佳答案

我认为您可以使用 join 进行排序,然后对结果进行排序按 route_id 然后按“订单”列:

$routes = Route::whereHas('ports', function($query) use ($request) {
$query->where('port_id', $request->route['from']['id']);
})
->whereHas('ports', function($query) use ($request) {
$query->where('port_id', $request->route['to']['id']);
})
->join('route_port','route_port.route_id','=','routes.id')
->join('ports','route_port.port_id','ports.id')->orderby('route_id')
->orderby('order')->get();

表名如有错误请更正...

关于mysql - Laravel Eloquent WhereHas 与 ORDER 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62084421/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com