Php 基于上一项的ID获取数组中的下一项
一点背景信息 我使用AngularJS作为前端框架,使用Laravel作为前端通信的API 问题 对于这个应用程序,我有一个“section”,它在视图中有一个next/prev按钮,当单击next时,将使用当前section ID作为参数进行API调用。根据我使用的端点(单击了哪个按钮),我希望从中获得数组中的下一个或上一个项目 我将如何在PHP/Laravel中实现这一点,我是否有可能或者应该重新考虑我的应用程序/api的结构 我现在拥有的 因此,目前我所拥有的只是一个“部分”收藏:Php 基于上一项的ID获取数组中的下一项,php,arrays,angularjs,laravel,laravel-5,Php,Arrays,Angularjs,Laravel,Laravel 5,一点背景信息 我使用AngularJS作为前端框架,使用Laravel作为前端通信的API 问题 对于这个应用程序,我有一个“section”,它在视图中有一个next/prev按钮,当单击next时,将使用当前section ID作为参数进行API调用。根据我使用的端点(单击了哪个按钮),我希望从中获得数组中的下一个或上一个项目 我将如何在PHP/Laravel中实现这一点,我是否有可能或者应该重新考虑我的应用程序/api的结构 我现在拥有的 因此,目前我所拥有的只是一个“部分”收藏: $se
$sections=Section::orderBy('order','DESC')->orderBy('id','ASC')->get()代码>使用普通SQL,您可以通过以下方式获得下一项
SELECT *
FROM TABLE_NAME
WHERE COLUMN_ID =
(SELECT min(COLUMN_ID)
FROM TABLE_NAME
WHERE COLUMN_ID > REPLACE_PREVIOUS_ID_HERE)
在上面的查询中,子查询仅查找上一个键之后的下一列ID,并将其返回到主查询。您可以使用
然后您将得到类似(我将其转换为json)
现在使用url表单“下一页url”或“上一页url”问题在于排序,我不能使用ID,因为有时“订单”列会覆盖这一点,例如,用户可以输入ID为1、2、3、4、5的5个部分。但是用户随后决定,他们希望节ID 3首先出现在前端,因此他们将order列设置为4。我们的新分区数组现在将是3,1,2,4,5。@SeriousJelly:你应该在你的问题中提前提到这些限制。这可能有点意思,不敢相信我还没有尝试过这个。现在就开始调查吧!如果您还需要什么,请告诉我。OK,我已经实现了这种方法,而且效果非常好!谢谢
$sections = Section::orderBy('order', 'DESC')->orderBy('id', 'ASC')->paginate(2);
return response()->json($sections );
{
"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
},
]
}