cyvelnet / laravel5-fractal
一个简单的分形服务提供商和转换器生成器,具有适用于laravel >=5的模型属性。
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-09-13 03:37:49 UTC
README
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