我有一个 whereHas 查询,从一个 pivot 表中获取数据。但是在这个 pivot 表中还有一个额外的列叫做“order”,我使用这一列来确保项目按正确的顺序排序,因为它代表公交路线。例如:公交/渡轮停靠在 1 2 3 4 5 6 站。
我们有一个出发点和目的地点,它们分别表示为“port_id”。
所以举个例子,下面的查询会给我正确的数据,但我需要确保“order”列总是根据出发港口 ID 和到达港口 ID 的正确顺序排列。因此,如果您搜索从港口 ID 14 到港口 ID 15,则不应返回任何结果,因为“order”列没有以这种方式连接它们。
这是我尝试过的方法:
这是数据透视表:
这是路由表:
谢谢。
我们有一个出发点和目的地点,它们分别表示为“port_id”。
所以举个例子,下面的查询会给我正确的数据,但我需要确保“order”列总是根据出发港口 ID 和到达港口 ID 的正确顺序排列。因此,如果您搜索从港口 ID 14 到港口 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](https://istack.dev59.com/c2J0C.webp)
![enter image description here](https://istack.dev59.com/CiZZ7.webp)
route_id == 3
,departurePort == 14
,destinationPort == 16
,您希望得到结果为[14, 17, 16]
;这个预期是否正确? - Tpojka