0
我想暂时禁用softdelete,这样我就可以通过ID找到删除的实体,然后在真我的单元测试(所以要确保我不会堵塞数据库)删除它们。的Symfony2:暂时禁用softdelete
我的尝试:
$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.
我也尝试禁用( '软删除的')和禁用( '软可删除')等 - 没有工作。但是,当我看到这 - $> EM-> getFilters(),过滤器有:
["enabledFilters"]=>
array(1) {
["softdeletable"]=>
string(48) "Gedmo\SoftDeleteable\Filter\SoftDeleteableFilter"
}
试图代码当然没有禁止不工作之一:
Doctrine\ORM\ORMInvalidArgumentException : EntityManager#remove() expects parameter 1 to be an entity object, NULL given.
什么我做错了吗?我知道我可以真正删除东西与设置deletedAt新的日期时间,但我怎么删除一个项目而不先取得它?
感谢您的帮助!
你在一个循环或使用的东西使用此之前禁止启用,您可以为做检查?如果是这样,过滤器可能已被禁用。 ( - >的IsEnabled( 'softdeleteable')$这个 - > EM-> getFilters())...' – qooplmao
@Chi可以尝试'$过滤器= $对于无论是之前使用'如果禁用启用你可以做的检查这 - > getContainer() - >获取( '主义') - > getEntityManager() - > getFilters(); $ filters-> disable('softdeleteable');'告诉我你是否有错误? – lolmx
您能否在这里提供一个可以得到认可的答案? – LBA