2014-06-11 19 views
2

我工作的一個API的Laravel 4,而現在,當我在JSON格式返回分頁信息它回來在這個特定的格式:使用自定義JSON模式返回分頁的雄辯模型?

{ 
     "Photos":{ 
      "total":1, 
      "per_page":15, 
      "current_page":1, 
      "last_page":1, 
      "from":1, 
      "to":1, 
      "data":[ 
       { 
        "id":3, 
        "moreInfo":"..." 
       } 
      ] 
     } 
    } 

但我想我的API,而不是返回信息這種格式:

{ 
     "total":1, 
     "per_page":15, 
     "current_page":1, 
     "last_page":1, 
     "from":1, 
     "to":1, 
     "Photos":[ 
      { 
       "id":3, 
       "moreInfo":"..." 
      } 
     ] 
    } 

相關的代碼如下所示:

if (Input::has('page')) { 
     $limit = (Input::get('limit')) ? Input::get('limit') : 15; 

     return Response::json([ 
      'Photos' => $photos->paginate($limit)->toArray() 
     ]); 
    } 
+0

如果您不喜歡Laravels'data'鍵,則手動將其重命名爲'Photos'。然後就是失去了'['Photos'=>'包裝。 – mario

回答

4

起初,我並沒有意識到如何簡單其實,這是,我試圖通過Pagination->getItems()Pagination->getCollection()獲取數據。

我意識到我所要做的就是從分頁獲得['data']部分。我的代碼現在看起來像:

if (Input::has('page')) { 
     $limit = (Input::get('limit')) ? Input::get('limit') : 15; 

     $pagedPhotos = $photos->paginate($limit); 

     return Response::json([ 
      'total' => $pagedPhotos->getTotal(), 
      'per_page' => $pagedPhotos->getPerPage(), 
      'current_page' => $pagedPhotos->getCurrentPage(), 
      'last_page' => $pagedPhotos->getLastPage(), 
      'from' => $pagedPhotos->getFrom(), 
      'to' => $pagedPhotos->getTo(), 
      'Photos' => $photos->paginate($limit)->toArray()['data'] 
     ]); 
    } 
2

所以剝離出photos組件:

return Response::json($photos->paginate($limit)->toArray()) 
+0

在我的第一個例子中返回響應,但是這些項目仍然在'[data]' –

+0

中,那麼你需要獲取那個分頁正在構建的數組並且自己對其進行修改。如果您想要自定義格式,那麼您必須編寫代碼來生成該表單。 –

+0

是的,我意識到了哈哈。我試圖弄清楚如何通過某種方法從Pagination類中獲取數據時,我只能訪問它返回的數組,從而使其複雜化:(。謝謝,您可以更新您的答案,我會接受它。 –