首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel8DB事务:是控制器实例的唯一事务,还是连接DB名称的唯一事务?

Laravel8DB事务:是控制器实例的唯一事务,还是连接DB名称的唯一事务?
EN

Stack Overflow用户
提问于 2021-07-19 04:30:48
回答 1查看 273关注 0票数 1

我对Laravel比较陌生,我想了解更多关于API控制器方法(即在routes/api.php中定义)中的代码的行为。

代码语言:javascript
复制
DB::connection($dbName)->beginTransaction();

假设两个人同时访问服务器和两个控制器实例。现在,这两个实例调用DB::connection($dbName)->beginTransaction();)并在执行之前执行一些代码。

为了更清楚地描述这种情况,A和B两个人都访问同一个Laravel服务器,具有两个相同控制器类的实例。两个控制器实例都从相同的IP地址访问相同的DB,并执行涉及beginTransaction的相同的代码段。

据我目前的资料,有两种可能发生的事情:

(1)它们被看作是两个不同的事务,并且像lastInsertId这样的东西是分开维护的。这是想要的行为,但我很难理解控制器的两个不同实例是如何在内部识别的。根据对Laravel源代码的粗略查看,它似乎只读取特定DB连接的配置文件,这对于控制器的两个实例都是相同的。

(2)它们被视为相同的事务,这不是期望的行为。我将不得不想出一种方法使它像(1)中所描述的那样工作。

目前,我没有足够的环境来准确地测试同步控制器实例的行为,所以我必须在这里提出这个问题。

我读过https://laravel.com/docs/8.x/database#database-transactions,但它没有告诉我们(1)或(2)是哪一个。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-19 08:28:56

这是第一个案子

事务甚至不是Laravel的一部分--它们是SQL的一部分。Laravel只调用SQL。

在PHP中,每个请求都是通过生成一个新的脚本实例来单独处理的。因此,在两个请求之间没有变量共享。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68435144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档