这个问题可能太宽泛了。所以网站使用通用数据库,如果在第 2 行怎么办:
\Doctrine\Repository::getUser()->findById(1)
没问题,但该用户可能会被删除。 6 行后,第 8 行:
\Doctrine\Repository::getUser()->findById(1)
会抛出异常!一般的解决方案是在请求正在进行时阻止 DELETE/UPDATE 命令。但怎么办呢?
最佳答案
针对您的案例修改后的示例:
$em->getConnection()->beginTransaction(); // suspend auto-commit
try {
\Doctrine\Repository::getUser()->findById(1)
//... do some work
\Doctrine\Repository::getUser()->findById(1)
// you're done with that particular user
$em->getConnection()->commit();
} catch (Exception $e) {
$em->getConnection()->rollBack();
throw $e;
}
请注意,您的存储库正在使用 EntityManager($em
) 的正确实例
关于Php,请求时锁定数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41394700/