lasselehtinen / cybertron
Laravel 的分形变换器生成器
0.1.0
2017-01-25 11:17 UTC
Requires
- doctrine/dbal: ^2.5
Requires (Dev)
- orchestra/testbench: ~3.0
- phpunit/phpunit: ^5.7
This package is auto-updated.
Last update: 2024-09-08 06:31:57 UTC
README
该包提供了一个简单的方式来为您的 Laravel 应用程序生成 Fractal Transformers。该包自动扫描模型的 Eloquent 关系和属性,并生成变换器模板。它还自动为整数和布尔字段添加类型转换。
示例
模型
class TestModel extends Model { /** * Example hasMany relationship */ public function hasManySomethings() { return $this->hasMany(SomeOtherModel::class); } }
迁移
public function up() { Schema::create('test_models', function (Blueprint $table) { $table->increments('id_field'); $table->boolean('boolean_field'); $table->string('string_field'); }); }
结果
<?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); } }
安装
您可以通过 composer 拉取该包
$ composer require lasselehtinen/cybertron --dev
由于您只需要开发中的生成器,不要在 config/app.php
的提供者数组中添加生成器。相反,将其添加到 app/Providers/AppServiceProvider.php
,如下所示
public function register() { if ($this->app->environment() == 'local') { $this->app->register(lasselehtinen\Cybertron\CybertronServiceProvider::class); } }
使用方法
运行 artisan 命令 make:transformer 并给出变换器的名称和模型的全局命名空间,如下所示
php artisan make:transformer PostTransformer --model=\\App\\Post
与 Laravel 内置的生成器类似,您可以提供一个命名空间给生成的变换器。
php artisan make:transformer \\App\\Api\\V1\\Transformers\\PostTransformer --model=\\App\\Post
许可证
MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件。