/** * @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(); } }
/** * @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); }