Laravel 笔交易

Laravel transaction

关于交易,我见过两种方式,这两种方式有什么区别和好处?

repo 中的这些代码。

示例1常用方法

DB::transaction(function () {

});

这个例子的目的是什么?

public function createCustomer(Request $request, $id)
    {   
        $self = $this;

        return $this->model->getConnection()->transaction(function () use ($self, $request, $id) {

        });
}

实际上,当您使用以下代码时:

DB::transaction(function () {
    // ...
});

Laravel 将使用 config/.env 文件中提供的默认连接,但如果您想为模型使用不同的连接,则可以使用以下代码,例如:

return $this->model->getConnection()->transaction(...);

在这种情况下,您的模型应该包含一个受保护的 属性 作为连接使用,例如:

class SomeModel extends Model {

    protected $connection = 'pgsql';
}

就是这样。