Пример #1
0
 /**
  * Add dependencies recursively through embedded documents. Embedded documents
  * may have references to other documents so those need to be saved first.
  *
  * @param ClassMetadata $class
  * @param CommitOrderCalculator $calc
  */
 private function addDependencies(ClassMetadata $class, $calc)
 {
     foreach ($class->fieldMappings as $mapping) {
         if ($mapping['isOwningSide'] && isset($mapping['reference']) && isset($mapping['targetDocument'])) {
             $targetClass = $this->dm->getClassMetadata($mapping['targetDocument']);
             if (!$calc->hasClass($targetClass->name)) {
                 $calc->addClass($targetClass);
             }
             if (!$calc->hasDependency($targetClass, $class)) {
                 $calc->addDependency($targetClass, $class);
             }
         }
         if (isset($mapping['embedded']) && isset($mapping['targetDocument'])) {
             $targetClass = $this->dm->getClassMetadata($mapping['targetDocument']);
             if (!$calc->hasClass($targetClass->name)) {
                 $calc->addClass($targetClass);
             }
             if (!$calc->hasDependency($targetClass, $class)) {
                 $calc->addDependency($targetClass, $class);
             }
             // avoid infinite recursion
             if ($class != $targetClass) {
                 $this->addDependencies($targetClass, $calc);
             }
         }
     }
 }
 /**
  * Add dependencies recursively through embedded documents. Embedded documents
  * may have references to other documents so those need to be saved first.
  *
  * @param ClassMetadata $class
  * @param CommitOrderCalculator $calc
  */
 private function _addDependencies($class, $calc)
 {
     foreach ($class->fieldMappings as $mapping) {
         if (isset($mapping['reference'])) {
             $targetClass = $this->_dm->getClassMetadata($mapping['targetDocument']);
             if (!$calc->hasClass($targetClass->name)) {
                 $calc->addClass($targetClass);
             }
             if (!$calc->hasDependency($targetClass, $class)) {
                 $calc->addDependency($targetClass, $class);
             }
         }
         if (isset($mapping['embedded'])) {
             $targetClass = $this->_dm->getClassMetadata($mapping['targetDocument']);
             if (!$calc->hasClass($targetClass->name)) {
                 $calc->addClass($targetClass);
             }
             if (!$calc->hasDependency($targetClass, $class)) {
                 $calc->addDependency($targetClass, $class);
             }
             $this->_addDependencies($targetClass, $calc);
         }
     }
 }