我正在阅读学说2文档,并对交易划分有疑问。以下两段代码之间是否有任何区别(显然除了语法之外)?或者这只是两种完全相同的方式(即隐式和显式)。什么是首选方法/最佳实践(隐式或显式)?
隐式:
// $em instanceof EntityManager
$user = new User;
$user->setName('George');
$em->persist($user);
$em->flush();
显式:
// $em instanceof EntityManager
$em->transactional(function($em) {
$user = new User;
$user->setName('George');
$em->persist($user);
});
答案 0 :(得分:1)
docs说:
当您想要包含时,需要显式事务划分 在工作单元中或当您想要使用时自定义DBAL操作 EntityManager API的一些需要活动的方法 交易。这样的方法会抛出TransactionRequiredException 告诉你这个要求。
在其他情况下没有区别,你可以使用两种中的任何一种(我更喜欢暗示减少噪音)。