dqjmq28248 2016-10-05 07:45
浏览 33
已采纳

Symfony2:暂时禁用softdelete

I want to temporarily disable softdelete, so I can find deleted entities by ID and then really delete them in my unit tests (so to make sure I do not clog the database).

What I tried:

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

But that throws an error:

InvalidArgumentException : Filter 'softdeletable' is not enabled.

I also tried disable('soft-deletable') and disable('soft-deleteable') etc - nothing worked. But when I look at $this->em->getFilters(), the filter is THERE:

["enabledFilters"]=>
  array(1) {
    ["softdeletable"]=>
      string(48) "Gedmo\SoftDeleteable\Filter\SoftDeleteableFilter"
  }

Trying the code without the disable of course doesn't work either:

Doctrine\ORM\ORMInvalidArgumentException : EntityManager#remove() expects parameter 1 to be an entity object, NULL given.

What am I doing wrong? I know I can really delete something with setting deletedAt to new DateTime but how do I delete an item without fetching it first?

Thanks for your help!

  • 写回答

1条回答 默认 最新

  • dongyipa0028 2016-10-05 11:18
    关注

    Originally a comment....

    Are you using this in a loop or something?
    If so, the filter may already be disabled.

    You could do a check for whether it is enabled before disabling using if like...

    $this->em->getFilters()->isEnabled('softdeleteable'))...
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 对于知识的学以致用的解释
  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败