2016-07-05 43 views
1

獲取的下一個項目中的陣列基於先前項

我使用AngularJS作爲前端框架和Laravel用於前端與進行通信的API的一些背景信息的ID。

問題

對於這個應用程序我有其在圖中,下一個被點擊時的下一/先前按鈕「部分的」,API調用與所述當前段ID製成爲參數。從此我希望能夠根據我使用的端點(哪個按鈕被點擊)來獲取數組中的下一個或上一個項目。

我將如何在PHP/Laravel中介紹這一點,是否有可能或應該重新考慮我的app/api的結構?

我現在

有這樣的時刻是什麼,我所有的我已經是一個「節」徵收:

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

回答

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

現在使用的URL形式 「next_page_url」 或 「prev_page_url」

+0

這可能是一件事,不敢相信我還沒有嘗試過這一個。現在看看它! – ChrisBratherton

+0

讓我知道你是否需要其他東西 – AgeValed

+0

好吧,我已經實現了這種方法,它完美的工作!謝謝 – ChrisBratherton

0

使用純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

相關問題