根据前一项的ID获取数组中的下一项[关闭]
Posted
技术标签:
【中文标题】根据前一项的ID获取数组中的下一项[关闭]【英文标题】:Getting the next item in an array based on the ID of the previous item [closed] 【发布时间】:2016-11-07 09:19:06 【问题描述】:一点背景资料
我使用 AngularJS 作为前端框架,并使用 Laravel 作为前端通信的 API。
问题
对于这个应用程序,我有一个“部分”,在视图中有一个下一个/上一个按钮,当单击下一个时,会使用当前部分 ID 作为参数进行 API 调用。由此,我希望根据我使用的端点(单击哪个按钮)来获取数组中的下一个或上一个项目。
我将如何在 php/Laravel 中解决这个问题,是否有可能或者我应该重新考虑我的应用程序/api 的结构?
我现在拥有的
所以目前,我只有一个“Section”集合:
$sections = Section::orderBy('order', 'DESC')->orderBy('id', 'ASC')->get();
【问题讨论】:
【参考方案1】:使用普通 SQL 可以通过以下方式获取下一项。
SELECT *
FROM TABLE_NAME
WHERE COLUMN_ID =
(SELECT min(COLUMN_ID)
FROM TABLE_NAME
WHERE COLUMN_ID > REPLACE_PREVIOUS_ID_HERE)
在上面的查询中,子查询只是在你的上一个键之后找到下一个 COLUMN_ID 并将其返回给主查询。
【讨论】:
问题在于排序,我不能使用 ID,因为有时“订单”列会覆盖它,例如,用户可以输入 ID 为 1、2、3、4 的 5 个部分, 5. 但是用户随后决定他们希望 Section ID 3 首先出现在前端,所以他们将 order 列设置为 4。我们的新 Section 数组现在将是 3, 1, 2, 4, 5。 @SeriousJelly:您应该在问题中提前提及此类限制。【参考方案2】:您可以使用Pagination
$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”形式的url
【讨论】:
这可能有点问题,不敢相信我还没有尝试过这个。马上调查! 如果您需要其他任何东西,请告诉我 好的,我已经实现了这种方法,并且效果很好!谢谢以上是关于根据前一项的ID获取数组中的下一项[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
[ jquery 效果 delay(duration,[queueName]) ] 此方法用于对队列中的下一项的执行设置延迟