杀死鸟的方法有很多种。不同的人有自己独特的有效做事方式,这就是为什么我在主题中添加了 OPINIONATED,这是我将多条记录插入多个表并有效运行其他服务的方式。
例如,假设您想要运行一个服务来在注册控制器中执行这些未列出的任务:
这里的主要要点是,我们在控制器中运行多个服务,并且它们必须全部成功运行,这样我们就不会出现部分事务问题。
部分交易可以描述为只完成部分交易的场景,导致数据不一致.
我们如何确保我们能够避免这种情况?
我们使用 Laravel 框架中随时可用的数据库事务外观。
要运行数据库事务,我们需要让代码执行器知道这是一个数据库事务。
然后我们创建一个 try-catch 块,这样我们就可以轻松捕获错误并执行需要的操作。 try 块将插入数据库,而 catch 块将捕获遇到的任何错误。
对于Try区块里的内容,我们会有
然后,这个 TRY 块中最重要的部分是在所有服务成功运行并返回成功响应的情况下提交这些更改。
如果这个try块中的所有服务都成功,数据库提交会将这些事务保存到数据库中。
现在让我们看看Catch块部分。
如果事务/服务在 TRY 块中失败,它将到达 catch 块。因此,我们将再次调用DB外观来回滚已插入数据库的每个事务,如下所示:
DB::rollBack() 外观将在几毫秒内取消保存/回滚已插入数据库的每个事务,不会出现任何问题。
这是我如何避免数据不一致的方法,尤其是当我在 Laravel 中运行多个数据库事务时。
完整代码块:
如果您有任何疑问,请不要犹豫,留下它。
以上是自以为是:如何在 Laravel 中安全地将多条记录插入到多个表中的详细内容。更多信息请关注PHP中文网其他相关文章!