예제 #1
0
 /**
  * @return array
  */
 private function getData()
 {
     $columns = $this->prefixColumnsForFetch(array_keys($this->classMetadata->getProperties()));
     switch ($this->joinParameters['relation']) {
         case ClassMetadata::JOIN_ONE_TO_MANY:
             $where = sprintf("a.%s = %%s", $this->joinParameters['join']['referenceColumn']);
             return $this->manager->getDibiConnection()->select($columns)->from($this->classMetadata->getTable())->as('a')->where($where, DataHelperLoader::getPropertyValue($this->parent, $this->joinParameters['join']['column']))->fetchAll();
             break;
         case ClassMetadata::JOIN_MANY_TO_MANY:
             $targetClassMetadata = $this->manager->createClassMetadata($this->joinParameters['entity']);
             return $this->manager->getDibiConnection()->select($columns)->from($targetClassMetadata->getTable())->as('a')->innerJoin($this->joinParameters['joiningTable'])->as('b')->on(sprintf('a.%s = b.%s', $this->joinParameters['joinSecondary']['referenceColumn'], $this->joinParameters['joinSecondary']['column']))->and('b.' . $this->joinParameters['joinPrimary']['referenceColumn'] . ' = %s', DataHelperLoader::getPropertyValue($this->parent, $this->joinParameters['joinPrimary']['column']))->fetchAll();
             break;
         default:
             throw new \InvalidArgumentException(sprintf('Invalid join specified %s', $this->joinParameters['relation']));
     }
 }
 /**
  * @param ClassMetadata $metadata
  */
 public function addClassMetadata(ClassMetadata $metadata)
 {
     $this->name = $metadata->getName();
     $this->properties = array_merge($this->properties, $metadata->getProperties());
     $this->fileResources = array_merge($this->fileResources, $metadata->getFileResources());
     if ($metadata->getCreatedAt() < $this->createdAt) {
         $this->createdAt = $metadata->getCreatedAt();
     }
 }
예제 #3
0
 /**
  * @param object $proxyInstance
  * @param ClassMetadata $classMetadata
  */
 private static function resetProxyProperties($proxyInstance, ClassMetadata $classMetadata)
 {
     $properties = array();
     foreach (array_keys($classMetadata->getProperties()) as $propertyName) {
         unset($proxyInstance->{$propertyName});
         $properties[$propertyName] = NULL;
     }
     self::setPropertyValue($proxyInstance, 'values', $properties);
 }