lasselehtinen / cybertron
Fractal Transformer generator for Laravel
Installs: 1 764
Dependents: 0
Suggesters: 0
Security: 0
Stars: 9
Watchers: 3
Forks: 2
Open Issues: 0
Requires
- doctrine/dbal: ^2.5
Requires (Dev)
- orchestra/testbench: ~3.0
- phpunit/phpunit: ^5.7
This package is auto-updated.
Last update: 2024-11-08 07:04:05 UTC
README
The package provides an easy way to generate Fractal Transformers for your Laravel applications. The package automatically scans the models Eloquent relationships and attributes and generates the Transformer boiler plate. It also automatically adds casting for integer and boolean fields.
Example
Model
class TestModel extends Model { /** * Example hasMany relationship */ public function hasManySomethings() { return $this->hasMany(SomeOtherModel::class); } }
Migration
public function up() { Schema::create('test_models', function (Blueprint $table) { $table->increments('id_field'); $table->boolean('boolean_field'); $table->string('string_field'); }); }
Result
<?php namespace App; use League\Fractal; use \lasselehtinen\Cybertron\Tests\TestModel; class TestTransformer extends Fractal\TransformerAbstract { /** * List of resources to automatically include * * @var array */ protected $defaultIncludes = [ 'hasManySomethings', ]; /** * Transform TestModel * * @param TestModel $testModel * @return array */ public function transform(TestModel $testModel) { return [ 'id_field' => (integer) $testModel->id_field, 'boolean_field' => (boolean) $testModel->boolean_field, 'string_field' => $testModel->string_field, ]; } /** * Include HasManySomethings * * @param TestModel $testModel * @return \League\Fractal\Resource\Collection */ public function includeHasManySomethings(TestModel $testModel) { return $this->collection($testModel->hasManySomethings, new SomeOtherModelTransformer); } }
Installation
You can pull in the package via composer:
$ composer require lasselehtinen/cybertron --dev
Since you only need the generator for development, don't add the generator the providers array in config/app.php
. Instead add it to app/Providers/AppServiceProvider.php
as shown below:
public function register() { if ($this->app->environment() == 'local') { $this->app->register(lasselehtinen\Cybertron\CybertronServiceProvider::class); } }
Usage
Run the artisan command make:transformer and give the Transformers name and the model with the full namespace like so:
php artisan make:transformer PostTransformer --model=\\App\\Post
Similar way as in Laravels built-in generators, you can provide a namespace for the generated Transformer.
php artisan make:transformer \\App\\Api\\V1\\Transformers\\PostTransformer --model=\\App\\Post
License
The MIT License (MIT). Please see License File for more information.