目前我正在发送给我的api:
return Forum::with('topics')
->paginate($pagination);
所以一个论坛有很多主题。我如何计算所有主题并通过此json响应发送回来?
答案 0 :(得分:5)
根据Laravels'文档:强>
Laravel paginator结果类实现了 照亮\合同\支持\ Jsonable接口合同并公开 toJson方法,所以很容易转换你的分页 结果为JSON。您还可以将paginator实例转换为JSON 只需从路径或控制器操作中返回它:
Route::get('users', function () {
return App\User::paginate();
});
分页器中的JSON将包含元信息,例如 total,current_page,last_page等。实际的结果对象 将通过JSON数组中的数据键提供。这是一个 通过从a返回paginator实例而创建的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 :(得分:1)
假设您需要获取具有相关主题和分页的所有论坛的列表以及主题的总数,您可以返回具有所需数据结构的数组
return [
'forums' => Forum::with('topics')->paginate($onPage)->toArray(),
'topics_total_count' => Topic::count()
];
请注意->toArray()
用法。由于paginate()
方法本身返回Illuminate/Pagination/LengthAwarePaginator
实例,因此需要它。
如果你不直接从控制器返回分页对象,它将不会被自动序列化为json。