Exemple #1
0
 protected function getDumpOrder(array $classes)
 {
     $calc = new CommitOrderCalculator();
     foreach ($classes as $class) {
         if (!$class->getReflectionClass()->isInstantiable() || $class->isMappedSuperclass) {
             continue;
         }
         if ($class->getTableName() === 'Group') {
             continue;
         }
         $calc->addClass($class);
         // $class before its parents
         foreach ($class->parentClasses as $parentClass) {
             $parentClass = $this->objectManager->getClassMetadata($parentClass);
             if (!$calc->hasClass($parentClass->name)) {
                 $calc->addClass($parentClass);
             }
             $calc->addDependency($class, $parentClass);
         }
         foreach ($class->associationMappings as $assoc) {
             if ($assoc['isOwningSide']) {
                 $targetClass = $this->objectManager->getClassMetadata($assoc['targetEntity']);
                 if (!$calc->hasClass($targetClass->name)) {
                     $calc->addClass($targetClass);
                 }
                 // add dependency ($targetClass before $class)
                 $calc->addDependency($targetClass, $class);
                 // parents of $targetClass before $class, too
                 foreach ($targetClass->parentClasses as $parentClass) {
                     $parentClass = $this->objectManager->getClassMetadata($parentClass);
                     if (!$calc->hasClass($parentClass->name)) {
                         $calc->addClass($parentClass);
                     }
                     $calc->addDependency($parentClass, $class);
                 }
             }
         }
     }
     return $calc->getCommitOrder();
 }
 private function getCommitOrder(EntityManager $em, array $classes)
 {
     $calc = new CommitOrderCalculator();
     foreach ($classes as $class) {
         $calc->addClass($class);
         foreach ($class->associationMappings as $assoc) {
             if ($assoc['isOwningSide']) {
                 $targetClass = $em->getClassMetadata($assoc['targetEntity']);
                 if (!$calc->hasClass($targetClass->name)) {
                     $calc->addClass($targetClass);
                 }
                 // add dependency ($targetClass before $class)
                 $calc->addDependency($targetClass, $class);
             }
         }
     }
     return $calc->getCommitOrder();
 }
Exemple #3
0
 private function _getCommitOrder(array $classes)
 {
     $calc = new CommitOrderCalculator();
     // Calculate dependencies
     foreach ($classes as $class) {
         $calc->addClass($class);
         foreach ($class->associationMappings as $assoc) {
             if ($assoc->isOwningSide) {
                 $targetClass = $this->_em->getClassMetadata($assoc->targetEntityName);
                 if (!$calc->hasClass($targetClass->name)) {
                     $calc->addClass($targetClass);
                 }
                 // add dependency ($targetClass before $class)
                 $calc->addDependency($targetClass, $class);
             }
         }
     }
     return $calc->getCommitOrder();
 }