Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 基于上一项的ID获取数组中的下一项_Php_Arrays_Angularjs_Laravel_Laravel 5 - Fatal编程技术网

Php 基于上一项的ID获取数组中的下一项

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

一点背景信息

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

问题

对于这个应用程序,我有一个“section”,它在视图中有一个next/prev按钮,当单击next时,将使用当前section ID作为参数进行API调用。根据我使用的端点(单击了哪个按钮),我希望从中获得数组中的下一个或上一个项目

我将如何在PHP/Laravel中实现这一点,我是否有可能或者应该重新考虑我的应用程序/api的结构

我现在拥有的

因此,目前我所拥有的只是一个“部分”收藏:


$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
        },
     ]
 }