jasonej / enhanced-resources
Laravel's API Resources enhanced.
Installs: 6
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 1
Open Issues: 2
pkg:composer/jasonej/enhanced-resources
Requires
- laravel/framework: ^5.8
Requires (Dev)
- orchestra/testbench: ^3.8
This package is auto-updated.
Last update: 2020-09-03 22:28:51 UTC
README
Laravel's API Resources enhanced.
Installation
$ composer require jasonej/enhanced-resources
Usage
Creating an Enhanced Resource
<?php use Illuminate\Http\Resources\Json\JsonResource; use Jasonej\EnhancedResources\EnhancedResource; class Resource extends JsonResource { use EnhancedResource; }
Creating an Enhanced Collection
<?php use Illuminate\Http\Resources\Json\ResourceCollection; use Jasonej\EnhancedResources\EnhancedCollection; class Collection extends ResourceCollection { use EnhancedCollection; }
Appending Attributes
The default behavior of API resources is to return the model's attributes:
<?php $user = User::find(1); Resource::make($user)->response();
{
  "id": 1,
  "first_name": "John",
  "last_name": "Doe",
  "secret": "SUPERSECRET"
}
Appending an attribute allows you to dynamically append attributes via the model's underlying accessors.
Resource::make($user)->append(['name'])->response();
{
  "id": 1,
  "first_name": "John",
  "last_name": "Doe",
  "name": "John Doe", 
  "secret": "SUPERSECRET"
}
Excluding Attributes
Excluding an attribute allows you to dynamically remove attributes from the resource's output.
Resource::make($user)->exclude(['id', 'secret'])->response();
{
  "first_name": "John",
  "last_name": "Doe"
}
Only Attributes
The only method allows you to restrict a resource's output to only the provided set of attributes.
Resource::make($user)->only(['first_name', 'last_name'])->response();
{
  "first_name": "John",
  "last_name": "Doe"
}