tamaspap/laravel5-fractal

为 Laravel 5 设计的一个简单的分形服务提供商和转换器生成器。

1.3 2015-08-08 18:47 UTC

This package is not auto-updated.

Last update: 2024-09-18 09:48:21 UTC


README

为 Laravel 5 和 Lumen 设计的一个简单的分形服务提供商和转换器生成器

欢迎来到我的第一个 Laravel 包,让我们摇滚吧。

新特性:从版本 1.2 开始,已移除自动类别名。

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

composer require cyvelnet/laravel5-fractal

Laravel 5

更新 composer 后,将 ServiceProvider 添加到 config/app.php 中的 providers 数组(适用于 Laravel >= 5)

Cyvelnet\Laravel5Fractal\Laravel5FractalServiceProvider::class,

并注册 Facade

'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');

现在您可以使用以下简单命令开始使用此包

$user = User::find(1);

return Fractal::item($user, new UserTransformer)->responseJson(200);

或者

$users = User::get(); // $users = User::paginate();

return Fractal::collection($users, new UserTransformer)->responseJson(200);

当您传递 Laravel 的分页对象时,您将自动获得一些额外的属性。

如果您只想获取转换后的数组,您可以这样做

Fractal::collection($user, new UserTransformer)->getArray();

现在您可以使用 artisan 生成转换器类

php artisan make:transformer

在这种情况下,我们将使用 artisan make:transformer UserTransformer,转换器文件将自动创建在 App\Transfomers 目录中

现在您可以打开生成的转换器文件,并开始按照您的喜好格式化数据

public function transform($user)
{
    return [
           'id' => $user->user_id,
           'name' => "{$user->user_firstname} {$user->user_lastname}",
           ...
           ];
}

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

php artisan vendor:publish

由于要将 Lumen 迁移的更改数量非常少,因此将添加新的分支以处理未来 Laravel 5 和 Lumen 之间的破坏性更改。

待办事项
  • 为 artisan 命令添加生成子转换器和包括功能框架的功能