cyvelnet / laravel5-fractal
A simple fractal service provider and transformer generator with model attributes for laravel >=5.
Installs: 173 838
Dependents: 2
Suggesters: 0
Security: 0
Stars: 79
Watchers: 6
Forks: 21
Open Issues: 1
Requires
- php: ^5.6|^7.0|^8.0
- doctrine/dbal: ^2.5
- illuminate/support: ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0 ||^10.0 || ^11.0
- league/fractal: 0.20.*
Requires (Dev)
- orchestra/testbench: ~3.2.0|~3.3.0|~3.4.0
- phpunit/phpunit: ^5.7
This package is auto-updated.
Last update: 2024-11-13 04:04:35 UTC
README
laravel5-fractal
A simple fractal service provider and transformer generator for laravel 5 and lumen
- Installation
- Config
- Command
- Usage
- Trait (Optional feature >= 2.1.3)
- Sub Relationship Modifier (Optional feature >=2.4.0)
- Extra Extra
Installation
Laravel
Require this package with composer using the following command:
composer require cyvelnet/laravel5-fractal
After updating composer, add the ServiceProvider to the providers array in config/app.php
Cyvelnet\Laravel5Fractal\Laravel5FractalServiceProvider::class,
and register Facade
And optionally add a new line to the aliases
array:
'Fractal' => Cyvelnet\Laravel5Fractal\Facades\Fractal::class
Lumen
register service provider in /bootstrap/app.php for lumen
$app->register(Cyvelnet\Laravel5Fractal\Laravel5FractalServiceProvider::class);
and uncomment the line
$app->withFacades();
and finally register Facade with
class_alias(Cyvelnet\Laravel5Fractal\Facades\Fractal::class, 'Fractal');
Config
You can also publish the config file to change implementations to suits you.
php artisan vendor:publish --provider="Cyvelnet\Laravel5Fractal\Laravel5FractalServiceProvider"
Automatic sub resources injection.
Auto inject/embed sub resources are disabled by default, to enable this feature, edit config/fractal.php
and set
autoload => true
Command
cyvelnet/fractal
come with a helpful commandline to assist your api transformation, just type and your Eloquent model attributes will be added to your transform array automatically
// generate a empty transformer php artisan make:transformer UserTransformer // generate a modeled transformer php artisan make:transformer UserTransformer -m User
Usage
Fractal::item();
Transform a single record
$user = User::find(1); Fractal::item($user, new UserTransformer());
Fractal::collection();
Transform a collection of records
$users = User::where('activated', true)->get(); // $resourceKey is optional for most serializer, but recommended to set for JsonApiSerializer $resourceKey = 'user'; Fractal::collection($users, new UserTransformer(), $resourceKey);
Fractal::includes()
Inject sub resources
Fractal::includes('orders') // where 'orders' is defined in your transformer class's $availableIncludes array
Fractal::excludes()
Remove sub resources
Fractal::excludes('orders')
Fractal::setSerializer()
Change transformer serializer
Fractal::setSerializer(\Acme\MySerializer); // where MySerializer is a class extends \League\Fractal\Serializer\SerializerAbstract
Fractal::fieldsets()
add sparse fieldset
Fractal::fieldsets(['orders' => 'item,qty,total,date_order'])
Fractal::addMeta()
add extra meta data to root
// specify with single meta data Fractal::addMeta($key = 'metaKey', $data = 'metaData') // add an array of meta data Fractal::addMeta([ 'key1' => 'data1', 'key2' => 'data2' ])
Trait
https://github.com/Cyvelnet/laravel5-fractal/wiki/Transformable-Trait
Sub Relationship Modifier
https://github.com/Cyvelnet/laravel5-fractal/wiki/Sub-Relationship-Modifier
Extra
https://github.com/Cyvelnet/laravel5-fractal/wiki/Custom-TransformerableAbstract-class