lasselehtinen/cybertron

Laravel 的分形变换器生成器

0.1.0 2017-01-25 11:17 UTC

This package is auto-updated.

Last update: 2024-09-08 06:31:57 UTC


README

Latest Version on Packagist Software License Build Status Quality Score StyleCI Total Downloads

该包提供了一个简单的方式来为您的 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)。有关更多信息,请参阅 许可证文件