cyvelnet/laravel5-fractal

一个简单的分形服务提供商和转换器生成器,具有适用于laravel >=5的模型属性。

v2.4.5 2024-03-13 02:30 UTC

README

StyleCI Build Status Total Downloads Latest Stable Version Latest Unstable Version License

laravel5-fractal

为laravel 5和lumen提供的简单分形服务提供商和转换器生成器

安装

Laravel

使用以下命令通过composer安装此包:

composer require cyvelnet/laravel5-fractal

更新composer后,将ServiceProvider添加到config/app.php中的providers数组中

Cyvelnet\Laravel5Fractal\Laravel5FractalServiceProvider::class,

并在aliases数组中添加新行

'Fractal' => Cyvelnet\Laravel5Fractal\Facades\Fractal::class

Lumen

在lumen的/bootstrap/app.php中注册服务提供商

$app->register(Cyvelnet\Laravel5Fractal\Laravel5FractalServiceProvider::class);

并取消注释该行

$app->withFacades();

最后使用以下方式注册Facade

class_alias(Cyvelnet\Laravel5Fractal\Facades\Fractal::class, 'Fractal');

配置

您还可以发布配置文件以更改实现以适应您的要求。

php artisan vendor:publish --provider="Cyvelnet\Laravel5Fractal\Laravel5FractalServiceProvider"
自动子资源注入。

默认情况下禁用了自动注入/嵌入子资源,要启用此功能,请编辑config/fractal.php并设置

autoload => true

命令

cyvelnet/fractal附带一个有用的命令行工具,可帮助您进行API转换,只需键入,您的Eloquent模型属性将自动添加到转换数组中

 // generate a empty transformer
 php artisan make:transformer UserTransformer
 
 // generate a modeled transformer
 php artisan make:transformer UserTransformer -m User

使用方法

Fractal::item();

转换单个记录

$user = User::find(1);

Fractal::item($user, new UserTransformer());

Fractal::collection();

转换记录集合

$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()

注入子资源

Fractal::includes('orders')  // where 'orders' is defined in your transformer class's $availableIncludes array

Fractal::excludes()

删除子资源

Fractal::excludes('orders')

Fractal::setSerializer()

更改转换器序列化器

Fractal::setSerializer(\Acme\MySerializer); // where MySerializer is a class extends \League\Fractal\Serializer\SerializerAbstract 

Fractal::fieldsets()

添加稀疏字段集

Fractal::fieldsets(['orders' => 'item,qty,total,date_order'])

Fractal::addMeta()

向根添加额外元数据

// specify with single meta data
Fractal::addMeta($key = 'metaKey', $data = 'metaData')

// add an array of meta data
Fractal::addMeta([
    'key1' => 'data1',
    'key2' => 'data2'
    ])

特性

https://github.com/Cyvelnet/laravel5-fractal/wiki/Transformable-Trait

子关系修饰符

https://github.com/Cyvelnet/laravel5-fractal/wiki/Sub-Relationship-Modifier

额外

https://github.com/Cyvelnet/laravel5-fractal/wiki/Custom-TransformerableAbstract-class