一点背景信息
我正在使用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,并将其返回到主查询。