删除Symfony上的DB条目

时间:2015-04-17 08:46:54

标签: php symfony doctrine-orm

假设我们有这样的代码:

//...
$item = $xyz->findOneBy(array('type'=>'abc'));
$em->remove($item);
$second = $xyz->findOneBy(array('type'=>'abc'));
//...

这个$ second是否从DB中获取任何值?我的目标是获得$ second作为空列表。但我不确定我必须做$ em-> flush();删除后()或不。如果我这样做,那当然可行,但随后我的脚本执行时间过长。

2 个答案:

答案 0 :(得分:3)

方法remove()add()不对数据库执行任何操作 - flush()。因此,findOneBy仍然会获得与remove()之前相同的结果 - 您必须致电flush()来执行INSERTUPDATEDELETE在DB上

答案 1 :(得分:0)

Flush应该将更改提交到数据库。 但是,实体经理应该知道尚未刷新的变化。

您可以在不刷新的情况下从实体管理器获取虚拟数据集。

更新Doctrine文档: 就像持久化一样,在实体上调用remove不会导致在数据库上立即发出SQL DELETE。在下一次涉及该实体的EntityManager#flush()调用时,将删除该实体。这意味着仍可以查询计划删除的实体,并将其显示在查询和集合结果中。

删除实体后,其内存状态与删除前相同,但生成的标识符除外。