astrotomic/laravel-transaction-proxy

此包提供了一个特性和一个类,用于在数据库事务中调用方法。

0.3.0 2020-11-19 13:32 UTC

This package is auto-updated.

Last update: 2024-08-29 05:30:11 UTC


README

Latest Version MIT License Offset Earth

GitHub Workflow Status StyleCI Total Downloads

此包提供了一个特性和一个类,用于在数据库事务中调用方法。如果您有任何正在运行数据库查询的监听器,例如删除子模型,这将很有用。

安装

您可以通过composer安装此包。

composer require astrotomic/laravel-transaction-proxy

用法

最简单的方法是使用\Astrotomic\LaravelTransactionProxy\HasTransactionCalls特性,它添加了一个transaction()方法。

use Astrotomic\LaravelTransactionProxy\HasTransactionalCalls;

class MyClass
{
    use HasTransactionalCalls;
}

事务链式方法

您可以在不传递任何参数的情况下调用transaction(),然后调用的方法将在事务中执行。

此示例将在事务中调用delete()方法。如果您有任何监听器正在运行数据库查询,例如删除子模型,这将很有用。如果任何查询失败,事务将防止您出现数据损坏。

$model->transaction()->delete();

// vs

use Illuminate\Support\Facades\DB;
DB::transaction(fn() => $model->delete());

条件回调

如果您想,您也可以将回调传递给transaction()方法,您将获得调用对象作为第一个参数。

$model->transaction(function(Model $model) {
    $model->update();
    $model->child->update();
});

测试

composer test

变更日志

有关最近更改的更多信息,请参阅CHANGELOG

贡献

有关详细信息,请参阅CONTRIBUTING。您可能还对行为准则感兴趣。

安全

如果您发现任何安全相关的问题,请参阅SECURITY以获取报告步骤。

鸣谢

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件

Treeware

您可以自由使用此包,但如果它进入了您的生产环境,我将非常感谢您为世界买一棵树。

众所周知,解决气候危机并保持我们的温度不超过1.5C的最好工具之一是种树。如果您为我的森林做出贡献,您将为当地家庭创造就业机会并恢复野生动物栖息地。

您可以在offset.earth/treeware购买树木。

有关Treeware的更多信息,请参阅treeware.earth