symfony2 / doctrine2 flush在删除后创建一个select

时间:2012-06-07 08:14:42

标签: symfony doctrine-orm

我正在使用这些命令删除实体:

$this->getEntityManager()->remove($exclusivedeal->getPicture());
$exclusivedeal->setPicture();
$this->getEntityManager()->flush();
$this->getEntityManager()->getConnection()->commit();

图片属性是与图片实体的ManyToOne关系。 图片Entity有一个函数,通过postremove Annotation调用,从文件系统中物理删除图片。 Flush()操作正在执行sql语句。在delete语句之后,也会调用select语句。这会产生以下错误:

[2012-06-07 10:06:46] request.CRITICAL: Doctrine\ORM\EntityNotFoundException: Entity was not found. (uncaught exception) at C:\xampp\htdocs\forum\app\cache\dev\doctrine\orm\Proxies\__CG__DankeForumBundleEntityPicture.php line 32 [] []

当我将注释更改为preRemove时,一切都很好,但这不是解决方案。我在与图片实体有关系的其他实体上进行相同的操作。

当我设置级联删除注释时,会发生同样的问题。

有谁知道我做错了什么?

非常感谢。

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,它给我带来了很多麻烦,试图解决问题。我终于找到了issue。 symfony网站上用于处理带有学说的文件上传的cookbook已经更新,以解决这个问题。

答案 1 :(得分:1)

我刚刚遇到了同样的问题,发现我的问题是因为我使用的是cascade = {" all"}(即'删除')和onDelete =& #34; CASCADE"

将级联更改为"坚持"解决了它,我现在能够删除具有图像关联的实体。