Symfony2:暂时禁用softdelete

我想暂时禁用softdelete,所以我可以通过ID找到删除的实体,然后在我的单元测试中真正删除它们(这样可以确保我不会阻塞数据库)。

我试过的:

$this->em->getFilters()->disable('softdeletable');
$item = $repository->findOneById($id); //fetch the item which was soft-deleted
$this->em->remove($item);
$this->em->flush();

但是这会引发一个错误:

InvalidArgumentException : Filter 'softdeletable' is not enabled.

我也尝试禁用('软删除')和禁用('软可删除')等 - 没有任何工作。 但是当我看$ this-> em-> getFilters()时,过滤器是THERE:

["enabledFilters"]=>
  array(1) {
    ["softdeletable"]=>
      string(48) "GedmoSoftDeleteableFilterSoftDeleteableFilter"
  }

尝试没有禁用的代码当然不起作用:

DoctrineORMORMInvalidArgumentException : EntityManager#remove() expects parameter 1 to be an entity object, NULL given.

我究竟做错了什么? 我知道我可以真正删除东西与设置deletedAt新的日期时间,但我怎么删除一个项目而不先取得它?

谢谢你的帮助!


最初是一个评论....

你是用循环还是其他?
如果是这样,过滤器可能已被禁用。

你可以检查它是否启用之前禁用使用如果像...

$this->em->getFilters()->isEnabled('softdeleteable'))...
链接地址: http://www.djcxy.com/p/65037.html

上一篇: Symfony2: temporarily disable softdelete

下一篇: deleteable) filter for doctrine in symfony