[Doctrine2] 刷新失败但 unitOfWork 进程正确

Posted

技术标签:

【中文标题】[Doctrine2] 刷新失败但 unitOfWork 进程正确【英文标题】:[Doctrine2]Flush fail but unitOfWork process correctly 【发布时间】:2018-03-23 09:08:06 【问题描述】:

我希望这个问题还没有回答,但我没有找到。

我在我的 symfony (3.4) 项目中使用了学说 2。我在容器中多次使用持久化和刷新,没有任何问题,在一小段代码中我遇到了一些我无法弄清楚的问题......

在我的控制器中,我有这样的代码:

            $obj = $this->container->get('some.service')->initiateObj(some_params);
            $this->getManager()->persist($obj);
            $this->getManager()->flush();
// I can't dump here

我的对象已从我的第一行代码正确设置并返回。 持久功能完美运行。如果我在持久化后转储我的对象,则此对象的原则事件设置正确设置。

刷新后,我的浏览器(铬)出现错误 500。

我认为问题出在 pre/postFlush 事件中,但是当在学说 EntityManager 代码中转储时,unitOfWork->commit 函数正常工作而没有错误,我可以在它之后转储。

但我不能在刷新后转储到我的控制器中......

这里是来自学说代码的 EntityManager:

public function flush($entity = null)

    $this->errorIfClosed();

    $this->unitOfWork->commit($entity);
    // I can dump here

我没有任何 symfony/doctrine 日志,也没有 apache2 日志。

有没有人知道在提交函数之后哪里会抛出错误?

非常感谢您的帮助!

【问题讨论】:

你有堆栈跟踪吗? 转到调试面板:) 我没有引发任何异常,我有一个错误 500,很遗憾我没有调试工具栏/面板。 你使用的是开发环境吗? 是的,当然!问题显然出在我的代码中,我尝试实际解决它。但我不明白为什么我没有任何堆栈跟踪、日志或异常抛出。我的浏览器中只有一条 500 错误消息。 【参考方案1】:

上周我在我的代码中找到了我的解决方案。

它在 postPersist 事件中。但我真的不明白为什么 symfony、教义......引发任何异常,只是一个带有错误 500 的空白屏幕。

感谢您的帮助。

【讨论】:

以上是关于[Doctrine2] 刷新失败但 unitOfWork 进程正确的主要内容,如果未能解决你的问题,请参考以下文章

Zend+Doctrine2:如何使用 ArrayCollections() 正确刷新实体?

Doctrine2 刷新单个删除的实体

更新元素的 Doctrine2 缓存

Doctrine2 Merge() 因复合索引而失败教义2错误?

Doctrine 2 中的级联“刷新”是啥意思?

Doctrine 2 迁移工作流程