Symfony2 / Doctrine2(MySQL)更新后不立即显示更新

时间:2015-10-23 08:55:01

标签: php mysql symfony doctrine-orm

我在Doctrine2中发生了多次更新,每次更新都在事务中。

在此代码的末尾是一个Select查询,它使用JMSSerializerBundle返回一堆数据。但是JMSSerializerBundle返回的JSON中没有一些更新。

我认为它与JMSSerializerBundle无关。

但与Doctrine2更相关。如果我再次运行select查询,那么数据就在那里。所以它就在那里,它只是没有在同一个HTTP调用中返回。

代码相对简单,所以我没有包含在内,这更像是一个关于理解可能发生的更新数据的问题,而不是一些问题。

交易应该在选择查询发生的时候完成吗?

订单如下:

  • 启动交易
  • 对实体进行更改
  • 持续
  • 冲洗
  • 提交

1 个答案:

答案 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;