php - Symfony2 - Doctrine - 有没有办法在一行中保存实体?

标签 php symfony doctrine-orm

为了用教义拯救实体我应该这样做

$em = $this->getDoctrine()->getEntityManager();
$em->persist($product);
$em->flush();

但也许我可以用某种方式在一行中做到这一点

$product->save();

$this->saveEntity($product);

$this->getDoctrineEntityManager()->persistAndFlush($product);

如果我需要自己创建这个方法,那么如何以 symfony 的方式做到这一点?

最佳答案

persist()flush() 是完全不同的独立操作。当您持久化实体对象时,您是在告诉实体管理器跟踪对象的更改。当您调用 flush() 方法时,实体管理器将在单个事务中将实体管理器跟踪的实体对象的更改推送到数据库。大多数时候实体管理器必须管理多个对象。例如,除了您的 product 实体,您可能还必须跟踪 tagcart 实体。每次保存这些实体对象时调用 persistAndFlush() 将导致到数据库的多个 IO 连接。这是没有效率的。所以我认为最好将它们视为一个单独的操作。

关于php - Symfony2 - Doctrine - 有没有办法在一行中保存实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12019839/

相关文章:

php - Symfony 表单提交不起作用

php - 使用 Symfony Autowiring 时是否可以排除多个目录?

php - 我们如何使用在网站上编写和上传的php代码来运行C代码?

php - AJAX、SEO 和 PHP 文件夹问题

PHP MySQL 获取有序记录集中记录的位置

rest - 如何捕获 Symfony2 Controller 操作中可能出现的所有异常?

php - Symfony 和学说坚持复杂的数据库

php - Doctrine 将带子查询的 SQL 转换为 DQL

php - SQL 查找值比指定值集中的每个值最接近的行

php - 如何使用 whereBetween() 从选定的 DB::raw() 值进行查询