[英]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.