Doctrine : `execute` 方法是只执行它的特定请求还是刷新队列中的所有语句
Posted
技术标签:
【中文标题】Doctrine : `execute` 方法是只执行它的特定请求还是刷新队列中的所有语句【英文标题】:Doctrine : does `execute` method execute only its specific request or it flushs all statements in the queue 【发布时间】:2020-06-05 09:23:43 【问题描述】:如果execute
方法只执行其特定请求,或者它是否像flush
那样刷新队列中的所有语句,我在 Doctrine 文档中找不到。
考虑这样的代码:
...
$this->getEntityManager()->persist($cache);
...
$this->getEntityManager()
->createQuery('DELETE ReportBundle:Report r WHERE r.id = :id')
->setParameter('id', 1)
->execute();
由于此时没有flush
方法,在调用execute
时是否会创建$cache
实体?
Doctrine 文档链接将不胜感激。
【问题讨论】:
【参考方案1】:cache
实体不会创建,因为execute
是Query
的方法,它只适用于您创建的Query
。当EntityManager
与UnitOfWork
一起使用时。
【讨论】:
我做了一些测试,你说得对:实体没有持久化。以上是关于Doctrine : `execute` 方法是只执行它的特定请求还是刷新队列中的所有语句的主要内容,如果未能解决你的问题,请参考以下文章
Symfony2 / Doctrine 使 $statement->execute() 不“缓冲”所有值
Doctrine DBAL ->execute() 和 Hydration,DB2 字段名称包括“#”