You will need a Resource and a Resource Collection. Your resource would look something like this.
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class ProductResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return [
'id' => $this->id,
'name' => $this->name,
'price' => $this->price
];
}
}
Which would return json like this
{
"id": 1,
"name": "Hello World Book",
"price": 100
}
and your resource collection would look something like this
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\ResourceCollection;
class ProductsResource extends ResourceCollection
{
/**
* Transform the resource collection into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return [
'data' => ProductResource::collection($this->collection)
];
}
}
this would return something like this
"data": [
{
"id": 1,
"name": "Hello World Book",
"price": 100
},
{
"id": 2,
"name": "Fairy Tale Book",
"price": 0
}
]