Laravel 扩展包推荐:Pipelines 增强

Laravel

Laravel 的 chefhasteeth/pipeline 包为内置的管道功能添加了一些独特的功能。例如,这个包有一个withTransaction()方法,它将在数据库事务中运行这个管道,并根据管道是否成功自动提交(或回滚):

use Chefhasteeth\Pipeline\Pipeline;

// 控制器方法
public function store(StoreRegistrationRequest $request)
{
    return Pipeline::make()
        ->withTransaction()
        ->send($request->all())
        ->through([
            RegisterUser::class,
            AddMemberToTeam::class,
            SendWelcomeEmail::class,
        ])
        ->then(fn ($data) => UserResource::make($data));
}

接下来,这个包还有一个 Pipable trait,你可以在数据对象或类上使用它:

use Chefhasteeth\Pipeline\Pipable;

class UserDataObject
{
    use Pipable;

    public string $name;
    public string $email;
    public string $password;
    // ...
}

// 运行 pipeline
return UserDataObject::fromRequest($request)
    ->pipeThrough([
        RegisterUser::class,
        AddMemberToTeam::class,
        SendWelcomeEmail::class,
    ])
    ->then(fn ($data) => UserResource::make($data));

你可以在 GitHub 上了解此软件包、获取完整的安装说明并查看 码源。如果你想了解更多关于 Laravel 管道,可以查看由 Jeff Ochoa 写的 Understanding Laravel Pipelines

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://laravel-news.com/supercharged-pi...

译文地址:https://learnku.com/laravel/t/68857

本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!