Laravel:如果我配置了单独的 read/write 连接,并在一个事务中同时进行读取和写入,会发生什么情况?

Laravel: what happens if I have separate read/write connections configured, and do both reads and writes within a transaction?

如果我在 database.php 中配置了 reads/writes,并且我开始了像 DB::transaction(function() { // series of reads and writes }) 这样的事务,write 连接上的所有内容 运行,或者会有两个单独的交易,还是会爆炸?

如果你说你想在一个事务中进行读取和写入操作使用相同的连接,那么这将工作正常 - 你可以在交易。

如果你说你想使用一个连接进行读取,而你在另一个连接上作为事务的一部分进行写入,那也可以正常工作,尽管有时读取连接会阻塞直到写连接事务完成。

https://github.com/laravel/framework/pull/3272

getReadPdo() 现在检查查询是否在事务内,在这种情况下 returns 与写入相同的 PDO 连接。