根据前一项的 ID 获取数组中的下一项


Getting the next item in an array based on the ID of the previous item

一点背景信息

我正在使用AngularJS作为前端框架,Laravel作为前端通信的API。

问题所在

对于这个应用程序,我有一个"部分",它在视图中有一个下一个/上一个按钮,当单击下一个按钮时,将使用当前部分 ID 作为参数进行 API 调用。由此,我希望根据我使用的端点(单击了哪个按钮)掌握数组中的下一个或上一个项目。

我将如何在 PHP/Laravel 中做到这一点,是否可能或我应该重新考虑我的应用程序/API 的结构?

我现在拥有的

所以目前,我只有一个"部分"集合:

$sections = Section::orderBy('order', 'DESC')->orderBy('id', 'ASC')->get();

您可以使用分页

$sections = Section::orderBy('order', 'DESC')->orderBy('id', 'ASC')->paginate(2);
return response()->json($sections );

然后你会得到类似的东西(我转换为json)

{
    "total": 17,
    "per_page": 2,
    "current_page": 1,
    "last_page": 9,
    "next_page_url": "{{URL}}?page=2",
    "prev_page_url": null,
    "from": 1,
    "to": 2,
    "data": [
        {
            "id": 40,
            "order":1
        },
        {
            "id": 41,
            "order":2
        },
     ]
 }

现在使用网址形式"next_page_url"或"prev_page_url"

使用纯 SQL 您可以通过以下方式执行此操作以获取下一项。

SELECT *
FROM TABLE_NAME
WHERE COLUMN_ID =
    (SELECT min(COLUMN_ID)
     FROM TABLE_NAME
     WHERE COLUMN_ID > REPLACE_PREVIOUS_ID_HERE)

在上面的查询中,子查询只是找到上一个键之后的下一个COLUMN_ID,并将其返回到主查询。