获取的下一个项目中的阵列基于先前项

问题描述:

获取的下一个项目中的阵列基于先前项

我使用AngularJS作为前端框架和Laravel用于前端与进行通信的API的一些背景信息的ID。

问题

对于这个应用程序我有其在图中,下一个被点击时的下一/先前按钮“部分的”,API调用与所述当前段ID制成为参数。从此我希望能够根据我使用的端点(哪个按钮被点击)来获取数组中的下一个或上一个项目。

我将如何在PHP/Laravel中介绍这一点,是否有可能或应该重新考虑我的app/api的结构?

我现在

有这样的时刻是什么,我所有的我已经是一个“节”征收:

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

您可以使用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 
     }, 
    ] 
} 

现在使用的URL形式 “next_page_url” 或 “prev_page_url”

+0

这可能是一件事,不敢相信我还没有尝试过这一个。现在看看它! – ChrisBratherton

+0

让我知道你是否需要其他东西 – AgeValed

+0

好吧,我已经实现了这种方法,它完美的工作!谢谢 – ChrisBratherton

使用纯SQL您可以在以下方式做到这一点获得下一个项目。

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

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

+0

的问题是订货,我不能使用ID,因为有时'订单'栏可以覆盖这个,例如,用户可以输入ID为1,2,3,4,5的5个部分。但是用户然后决定他们w^ant部分ID 3先出现在前端,因此他们将订单列设置为4.我们新的部分数组现在将是3,1,2,4,5。 – ChrisBratherton

+0

@SeriousJelly:您应该在您的前面提到这些限制题。 – CBroe