2016-10-06 38 views
0

目前我送這回我的API:Laravel計數主題

return Forum::with('topics') 
      ->paginate($pagination); 

所以論壇有很多話題。我如何計算所有主題並使用此json響應發回給他們?

回答

5

根據Laravels'文檔:

的Laravel分頁程序結果類實現 照亮\合同的\ Support \ Jsonable接口合同,並揭露 的的toJSON方法,所以它是很容易的分頁轉換 結果爲JSON。您也可以將分頁程序實例轉換爲JSON通過 簡單地從一個路徑或控制器動作返回它:

Route::get('users', function() { 
    return App\User::paginate(); 
}); 

從分頁程序的JSON將包括元數據信息,如 總,CURRENT_PAGE,last_page,和更多。實際結果對象 將通過JSON數組中的數據鍵可用。下面是從 路線返回分頁程序實例創建的JSON的 例如:

{ 
    "total": 50, 
    "per_page": 15, 
    "current_page": 1, 
    "last_page": 4, 
    "next_page_url": "http://laravel.app?page=2", 
    "prev_page_url": null, 
    "from": 1, 
    "to": 15, 
    "data":[ 
     { 
      // Result Object 
     }, 
     { 
      // Result Object 
     } 
    ] 
} 
1

假設你需要獲得與相關主題和分頁,並且還題目的總數所有論壇的列表,您可以用所需的數據結構

return [ 
    'forums' => Forum::with('topics')->paginate($onPage)->toArray(), 
    'topics_total_count' => Topic::count() 
]; 

注意->toArray()使用返回數組。這是因爲paginate()方法本身需要返回Illuminate/Pagination/LengthAwarePaginator實例。 如果不直接從控制器返回分頁對象,它將不會被自動序列化爲json。