Level 5
I think I solved it this way:
I added
'pagination' => $this->resource->toArray()
to my array.
Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.
Hi everybody,
I wrote a little API Ressource for my User's model:
use Illuminate\Http\Resources\Json\ResourceCollection;
class User extends ResourceCollection
{
/**
* Transform the resource collection into an array.
*
* @param \Illuminate\Http\Request $request
*
* @return array
*/
public function toArray($request)
{
return [
'data' => $this->collection->transform(function ($user) {
return [
'id' => $user->id,
'name' => $user->name,
'email' => $user->email,
'aboutme' => $user->aboutme,
'homepage' => $user->homepage,
'twitter' => $user->twitter,
'created_at' => $user->created_at,
'updated_at' => $user->updated_at,
'avatar' => $user->getAvatar(),
];
}),
];
}
}
Now I'm trying to fetch my items in my ApiController:
/**
* @param \Illuminate\Http\Request $request
*
* @return \Illuminate\Http\JsonResponse
*/
public function getList(Request $request)
{
$data = new UserResourceCollection(User::paginate(1));
return response()->json($data);
}
So - actually I'm just getting this:
{
"data": [
{
"id": 1,
"name": "John Doe",
"email": "[email protected]",
"aboutme": "Test",
"homepage": "http://example.org",
"twitter": "@example",
"created_at": {
"date": "2018-08-20 11:36:25.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"updated_at": {
"date": "2018-10-26 19:47:40.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"avatar": {
"id": 73,
"model_type": "App\User",
"model_id": "1",
"collection_name": "user_images",
"name": "Bild",
"file_name": "Bild.jpg",
"mime_type": "image/jpeg",
"disk": "public",
"size": "70250",
"manipulations": [],
"custom_properties": {
"custom_headers": [],
"generated_conversions": {
"preview": true,
"thumb": true,
"header": true
},
"default_avatar": true
},
"responsive_images": {
"preview": {
"urls": [
"Bild___preview_600_540.jpg",
"Bild___preview_501_450.jpg",
"Bild___preview_419_377.jpg",
"Bild___preview_351_315.jpg",
"Bild___preview_293_263.jpg"
],
},
"header": {
"urls": [
"Bild___header_1800_1200.jpg",
"Bild___header_1505_1003.jpg",
"Bild___header_1260_840.jpg",
"Bild___header_1054_702.jpg",
"Bild___header_881_587.jpg",
"Bild___header_737_491.jpg",
"Bild___header_617_411.jpg",
"Bild___header_516_344.jpg",
"Bild___header_432_288.jpg"
]
}
},
"order_column": "10",
"created_at": "2018-10-11 14:49:14",
"updated_at": "2018-10-21 16:05:31"
}
}
]
}
Well - all my pagination information is gone :-(
If I do this:
/**
* @param \Illuminate\Http\Request $request
*
* @return \Illuminate\Http\JsonResponse
*/
public function getList(Request $request)
{
$data = new UserResourceCollection(User::paginate());
return response()->json($data);
}
I'm getting both users:
{
"data": [
{
"id": 1,
"name": "John Doe",
"email": "[email protected]",
"aboutme": "Test",
"homepage": "http://example.org",
"twitter": "@example",
"created_at": {
"date": "2018-08-20 11:36:25.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"updated_at": {
"date": "2018-10-26 19:47:40.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"avatar": {
"id": 73,
"model_type": "App\User",
"model_id": "1",
"collection_name": "user_images",
"name": "Bild",
"file_name": "Bild.jpg",
"mime_type": "image/jpeg",
"disk": "public",
"size": "70250",
"manipulations": [],
"custom_properties": {
"custom_headers": [],
"generated_conversions": {
"preview": true,
"thumb": true,
"header": true
},
"default_avatar": true
},
"responsive_images": {
"preview": {
"urls": [
"Bild___preview_600_540.jpg",
"Bild___preview_501_450.jpg",
"Bild___preview_419_377.jpg",
"Bild___preview_351_315.jpg",
"Bild___preview_293_263.jpg"
]
},
"header": {
"urls": [
"Bild___header_1800_1200.jpg",
"Bild___header_1505_1003.jpg",
"Bild___header_1260_840.jpg",
"Bild___header_1054_702.jpg",
"Bild___header_881_587.jpg",
"Bild___header_737_491.jpg",
"Bild___header_617_411.jpg",
"Bild___header_516_344.jpg",
"Bild___header_432_288.jpg"
]
}
},
"order_column": "10",
"created_at": "2018-10-11 14:49:14",
"updated_at": "2018-10-21 16:05:31"
}
},
{
"id": 2,
"name": "Jonnie Donnie",
"email": "[email protected]",
"aboutme": "<p>It's a me</p>",
"homepage": "https://example.wtf",
"twitter": "@example2",
"created_at": {
"date": "2018-09-25 08:23:18.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"updated_at": {
"date": "2018-10-30 07:18:48.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"avatar": {
"id": 40,
"model_type": "App\User",
"model_id": "2",
"collection_name": "user_images",
"name": "16427620_1962599807213714_791945067670209719_n",
"file_name": "16427620_1962599807213714_791945067670209719_n.jpg",
"mime_type": "image/jpeg",
"disk": "public",
"size": "15466",
"manipulations": [],
"custom_properties": {
"custom_headers": [],
"generated_conversions": {
"preview": true,
"thumb": true,
"header": true
},
"default_avatar": true,
"default_header": true
},
"responsive_images": {
"preview": {
"urls": [
"16427620_1962599807213714_791945067670209719_n___preview_600_540.jpg",
"16427620_1962599807213714_791945067670209719_n___preview_501_450.jpg",
"16427620_1962599807213714_791945067670209719_n___preview_420_378.jpg",
"16427620_1962599807213714_791945067670209719_n___preview_351_315.jpg",
"16427620_1962599807213714_791945067670209719_n___preview_294_264.jpg",
"16427620_1962599807213714_791945067670209719_n___preview_245_220.jpg"
]
},
"header": {
"urls": [
"16427620_1962599807213714_791945067670209719_n___header_1800_1200.jpg",
"16427620_1962599807213714_791945067670209719_n___header_1505_1003.jpg",
"16427620_1962599807213714_791945067670209719_n___header_1260_840.jpg",
"16427620_1962599807213714_791945067670209719_n___header_1054_702.jpg",
"16427620_1962599807213714_791945067670209719_n___header_881_587.jpg",
"16427620_1962599807213714_791945067670209719_n___header_737_491.jpg",
"16427620_1962599807213714_791945067670209719_n___header_617_411.jpg",
"16427620_1962599807213714_791945067670209719_n___header_516_344.jpg",
"16427620_1962599807213714_791945067670209719_n___header_432_288.jpg",
"16427620_1962599807213714_791945067670209719_n___header_361_240.jpg"
]
}
},
"order_column": "3",
"created_at": "2018-09-25 08:23:50",
"updated_at": "2018-10-30 18:06:49"
}
}
]
}
But still without pagination data?
What am I doing wrong?
I think I solved it this way:
I added
'pagination' => $this->resource->toArray()
to my array.
Please or to participate in this conversation.