public function remove(IEntity $entity, $withCascade = TRUE) { $queuePersist = $queueRemove = []; RemovalHelper::getCascadeQueueAndSetNulls($entity, $this, $withCascade, $queuePersist, $queueRemove); foreach ($queuePersist as $object) { if ($object instanceof IEntity) { $repository = $this->configuration[2][get_class($object)]; $this->loader->getRepository($repository)->doPersist($object); } elseif ($object instanceof IRelationshipCollection) { $object->doPersist(); } } foreach ($queueRemove as $object) { $repository = $this->configuration[2][get_class($object)]; $this->loader->getRepository($repository)->doRemove($object); } return $entity; }