Laravel 5.1:如何执行交易块?

And*_*ira 0 php laravel eloquent

我具有以下关系:一个学生与一个具有“一对一”的关系。一个人与Address具有“多对多”关系。

我要保留数据:首先创建人,在创建地址后,再创建学生。

但是,如果在任何这些表的持久化过程中发生任何错误,我都希望回滚转换。例如:如果我保存了“人”和“地址”,而“学生”失败了,我想回滚所有内容。

如何用口才来处理呢?

谢谢。

Md *_*yan 5

Laravel提供了多种简单的方法来处理这种情况。

DB::transaction(function () {
    //all your codes 
});
Run Code Online (Sandbox Code Playgroud)

从laravel文档:

要在数据库事务中运行一组操作,可以在数据库外观上使用事务方法。如果一个异常抛出交易闭幕之内,交易将自动回滚。如果关闭成功执行,交易将自动提交。您无需担心使用事务方法时手动回滚或提交。

另外,如果您想手动进行操作,则可以使用

    DB::beginTransaction();
    //your codes
    DB::commit();
Run Code Online (Sandbox Code Playgroud)

要了解有关交易的更多信息,请在此处阅读正式文件