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