Laravel 扩展包推荐:Pipelines 增强
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 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。