为 Laravel 应用程序构建的 Fractal

头条 沈益飞 ⋅ 于 5个月前 ⋅ 864 阅读

分享链接:https://github.com/spatie/laravel-fractal
看了教程 Laravel 教程 - 实战构架 API 服务器 推荐使用 Fractal 奈何自己在写 API 时候没有使用 DingoApi 却是使用了 Passport

每次使用的时候都需要,这样:

use League\Fractal;
use League\Fractal\Manager;
use League\Fractal\Resource\Collection;
use League\Fractal\Serializer\DataArraySerializer;
use League\Fractal\Serializer\ArraySerializer;
use League\Fractal\Pagination\IlluminatePaginatorAdapter;
use League\Fractal\Serializer\JsonApiSerializer;

还有这样:

return (new Manager())->setSerializer(new ArraySerializer())
    ->parseIncludes('user')
    ->createData(
        (new Collection($dueDetails->paginate(10)->getCollection(), new ProjectTransformer(), 'data'))
        ->setPaginator(new IlluminatePaginatorAdapter($dueDetails->paginate(10)))
        ->setMeta([
            'count_due_capital' => $dueDetails->count(),
            'sum_due_capital' => $dueDetails->sum('due_capital')
        ])
    )
    ->toArray();

感觉很痛苦。

然后就在 Github 上找到了这个 spatie/laravel-fractal

然后代码就变成这样:

return fractal()
    ->withResourceName('data')
    ->collection($dueDetails->paginate(10)->getCollection())
    ->transformWith(new ProjectTransformer())
    ->paginateWith(new IlluminatePaginatorAdapter($dueDetails->paginate(10)))
    ->addMeta([
            'count_due_capital' => $dueDetails->count(),
            'sum_due_capital' => $dueDetails->sum('due_capital')
    ])
    ->includeUser()
    ->toArray();

本文章首发在 Laravel China 社区
回复数量: 0
    暂无评论~~
    您需要登陆以后才能留下评论!

    Composer 中国全量镜像

    Top 100 扩展包

    Lumen 中文文档

    Laravel 速查表

    Laravel 中文文档

    Laravel 项目开发规范

    Laravel 开发环境部署

    Elasticsearch-PHP 中文文档

    Lumen 中文文档

    GraphQL PHP 中文文档

    社区文档撰写指南

    TDD 构建 Laravel 论坛笔记

    PHP PSR 标准规范

    PHP 设计模式全集

    Dingo API 中文文档