我在Doctrine2中发生了多次更新,每次更新都在事务中。
在此代码的末尾是一个Select查询,它使用JMSSerializerBundle返回一堆数据。但是JMSSerializerBundle返回的JSON中没有一些更新。
我认为它与JMSSerializerBundle无关。
但与Doctrine2更相关。如果我再次运行select查询,那么数据就在那里。所以它就在那里,它只是没有在同一个HTTP调用中返回。
代码相对简单,所以我没有包含在内,这更像是一个关于理解可能发生的更新数据的问题,而不是一些问题。
交易应该在选择查询发生的时候完成吗?
订单如下:
答案 0 :(得分:2)
可能取决于交易中的隔离级别。 要使其在事务内部工作,您需要设置:
$entityManager
->getConnection()
->setTransactionIsolation(Connection::TRANSACTION_READ_COMMITTED);
通过这种方式,事务中编写的任何内容都是可读的。
其他可能的值:
const TRANSACTION_READ_UNCOMMITTED = 1;
const TRANSACTION_READ_COMMITTED = 2;
const TRANSACTION_REPEATABLE_READ = 3;
const TRANSACTION_SERIALIZABLE = 4;