как вернуть return коллекцию с пагинацией через resource Laravel?
если просто вернуть
return $user->orders()->orderBy('created_at', 'desc')->paginate(10);
то коллекция с пагинацией будет, а когда пройдет через Resource, то получается объект без пагинации
public function index(OrderInterface $orderService): JsonResponse
{
$user = Auth::user()
return response()->json([
'orders' => OrderResource::collection($user->orders()->orderBy('created_at', 'desc')->paginate(10))
]);
}
//в этом Resource есть вложенный Resource
class OrderResource extends JsonResource
{
public function toArray($request)
{
return [
'id' => $this->id,
'customer' => $this->customer
'products' => OrderProductResource::collection($this->products),
];
}
}
class ProductResource extends JsonResource
{
public function toArray($request)
{
return [
'id' => $this->id,
'name' => $this->name,
'purchase_price' => $this->purchase_price,
'price' => $this->price,
'quantity' => $this->quantity,
];
}
}
Ответы (2 шт):
Автор решения: lxShaDoWxl
→ Ссылка
что бы нормально вывести пагинацию надо делать
return OrderResource::collection($user->orders()->orderBy('created_at', 'desc')->paginate(10));
по другому всегда без пагинации поидеи будет
Автор решения: Prog Ramm
→ Ссылка
public function index(): JsonResponse
{
$user = Auth::user()
return response()->json([
'orders' => OrderResource::collection($user->orders()->orderBy('created_at', 'desc')->paginate(10))
->response()->getData()
]);
}