Adding Meta Data
Include link
information when transforming a resource collection:
For Example
1.Create userResource and implement code as below
To know more about Create Resources visit our Bajarangisoft site.
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class User extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return [
'data' => $this->collection,
'links' => [
'self' => 'link-value',
],
];
}
}
To get resource response implement code as below in web.php
use App\Http\Resources\User as UserResource;
use App\User;
Route::get('/user', function () {
return UserResource::collection(User::all());
});
When returning additional meta data from your resources, you never have to worry about accidentally overriding the
links
or meta
keys that are automatically added by Laravel when returning paginated responses. Any additional links
you define will be merged with the links provided by the paginator.Top Level Meta Data
Sometimes you may wish to only include certain meta data with a resource response if the resource is the outermost resource being returned. Typically, this includes meta information about the response as a whole. To define this meta data, add a with
method to your resource class. This method should return an array of meta data to be included with the resource response only when the resource is the outermost resource being rendered:
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\ResourceCollection;
class UserCollection extends ResourceCollection
{
/**
* Transform the resource collection into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return parent::toArray($request);
}
/**
* Get additional data that should be returned with the resource array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function with($request)
{
return [
'meta' => [
'key' => 'value',
],
];
}
}
Adding Meta Data When Constructing Resources
You may also add top-level data when constructing resource instances in your route or controller. The additional
method, which is available on all resources, accepts an array of data that should be added to the resource response:
<?php
namespace App\Http\Controllers;
use App\Http\Resources\User as UserResource;
use App\User;
class demoController extends AppBaseController
{
public function Users()
{
return (new UserCollection(User::all()->load('roles')))
->additional(['meta' => [
'key' => 'value',
]]);
}
}