Bläddra i källkod

[Tree] MaterializedPath: Changed the way "removeNode" works for MongoDB

comfortablynumb 13 år sedan
förälder
incheckning
583807e5df
1 ändrade filer med 8 tillägg och 3 borttagningar
  1. 8 3
      lib/Gedmo/Tree/Strategy/ODM/MongoDB/MaterializedPath.php

+ 8 - 3
lib/Gedmo/Tree/Strategy/ODM/MongoDB/MaterializedPath.php

@@ -21,15 +21,20 @@ class MaterializedPath extends AbstractMaterializedPath
      */
     public function removeNode($om, $meta, $config, $node)
     {
+        $uow = $om->getUnitOfWork();
         $pathProp = $meta->getReflectionProperty($config['path']);
         $pathProp->setAccessible(true);
 
-        // Remove node and its children
-        $om->createQueryBuilder()
-            ->remove($meta->name)
+        // Remove node's children
+        $results = $om->createQueryBuilder()
+            ->find($meta->name)
             ->field($config['path'])->equals(new \MongoRegex('/^'.preg_quote($pathProp->getValue($node)).'.?+/'))
             ->getQuery()
             ->execute();
+        
+        foreach ($results as $node) {
+            $uow->scheduleForDelete($node);
+        }
     }
 
     /**