![](/img/trans.png)
[英]Laravel Eloquent multiple whereHas on relationship where column 'order' is higher than the previous whereHas
[英]Laravel Eloquent WhereHas with ORDER column
我有一个 whereHas 查询,它从 pivot 表中获取数据。 但是在 pivot 表上,我还有一个名为“订单”的额外列,我使用此列来确保项目以正确的顺序排序,因为它代表了一条公交路线。 例如:巴士/渡轮停靠在 1 2 3 4 5 6。
我们有一个出发点和目的地点,表示为“port_id”。
因此,例如,下面的查询为我提供了正确的数据,但我需要确保“订单”列始终根据出发港口 ID 和到达港口 ID 以正确的顺序排列。 因此,如果您搜索 port_id 14 到 port_id 15 它不应该返回任何结果,因为“订单”列没有以这种方式连接这些结果。
这是我尝试过的:
$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();
谢谢你。
我认为您可以使用 join 进行排序,然后按 route_id 排序结果,然后按“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']);
})
->join('route_port','route_port.route_id','=','routes.id')
->join('ports','route_port.port_id','ports.id')->orderby('route_id')
->orderby('order')->get();
如果表名有误,请更正...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.