1. How to load an object with soft remoteness
According to the documentation, disable the filter for entity manager:
$em->getFilters()->disable('softdeleteable'); $object = $em->find('AppBundle:Object', 1);
To enable soft-delete again:
$em->getFilters()->enable('softdeleteable');
Note: $em->clear(); may be required before this line $em->clear(); if the object is already loaded with the disabled soft-delete filter.
2. How to completely remove an object from the database
Despite the fact that the documentation is not mentioned, the first solution does not work if you need to delete an object and bypass the soft-delete filter. The filter must be removed from the object manager event listeners:
// initiate an array for the removed listeners $originalEventListeners = []; // cycle through all registered event listeners foreach ($em->getEventManager()->getListeners() as $eventName => $listeners) { foreach ($listeners as $listener) { if ($listener instanceof \Gedmo\SoftDeleteable\SoftDeleteableListener) { // store the event listener, that gets removed $originalEventListeners[$eventName] = $listener; // remove the SoftDeletableSubscriber event listener $em->getEventManager()->removeEventListener($eventName, $listener); } } } // remove the entity $em->remove($object); $em->flush($object); // or $em->flush(); // re-add the removed listener back to the event-manager foreach ($originalEventListeners as $eventName => $listener) { $em->getEventManager()->addEventListener($eventName, $listener); }
Literature:
Aurelijus rozenas
source share