![](/img/trans.png)
[英]How to extend or make custom PasswordBroker sendResetLink() method in Laravel 5.8?
[英]Custom/Extend laravel pagination method
我使用 vue 组件在刀片模板布局上显示数据,例如分页数据,这就是为什么我创建了一个方法来以我需要的形状返回分页数据,我想知道是否可以链接或覆盖 laravel 分页方法? 现在我正在这样做,但我想扩展 laravel 查询生成器或 laravel 用于分页的任何类:
$posts = Post::latest()->with(['category','user'])->paginate($request->input('paginate', 6));
$posts = $this->getPagination($posts);
public function getPagination($results)
{
return
[
'data' => $results,
'pagination' => [
'total' => $results->total(),
'per_page' =>$results->perPage(),
'current_page' => $results->currentPage(),
'last_page' => $results->lastPage(),
'from' => $results->firstItem(),
'to' => $results->lastItem()
]
];
}
我想要类似的东西:
$posts = Post::paginate($request->input('paginate', 6))->getPaginatedData();
在构建 API 时,您可能需要一个位于 Eloquent 模型和实际返回给应用程序用户的 JSON 响应之间的转换层。 Laravel 的资源类允许你将模型和 model collections 转换为 JSON。
然后你可以做这样的事情......
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class Post extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @param \Illuminate\Pagination\Paginator $result
* @return array
*/
public function toArray($request, $result)
{
return [
'data' => $results,
'pagination' => [
'total' => $results->total(),
'per_page' =>$results->perPage(),
'current_page' => $results->currentPage(),
'last_page' => $results->lastPage(),
'from' => $results->firstItem(),
'to' => $results->lastItem()
];
}
}
根据您的问题,我只用一个名字放置 Post。 但是你可以做一些类似 Paginate 而不是 Post 的事情。 并通过此 api 资源传递所有模型。
例如:
class Paginate extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @param \Illuminate\Pagination\Paginator $result
* @return array
*/
public function toArray($request, $result)
{
return [
'data' => $results,
'pagination' => [
'total' => $results->total(),
'per_page' =>$results->perPage(),
'current_page' => $results->currentPage(),
'last_page' => $results->lastPage(),
'from' => $results->firstItem(),
'to' => $results->lastItem()
];
}
}
然后...
use App\Http\Resources\Paginate as PaginateResource;
use App\User;
Route::get('/user', function () {
return new PaginateResource(User::paginate());
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.