Hydrates entity.
public hydrateEntity ( array $data ) : Nextras\Orm\Entity\IEntity | ||
$data | array | |
return | Nextras\Orm\Entity\IEntity |
protected function fetch(SqlBuilder $builder, $hasJoin, array $values) { $primaryKey = $this->targetRepository->getMapper()->getStorageReflection()->getStoragePrimaryKey()[0]; $builder->addWhere($primaryKey, $values); $builder->addSelect(($hasJoin ? 'DISTINCT ' : '') . $builder->getTableName() . '.*'); $result = $this->context->queryArgs($builder->buildSelectQuery(), $builder->getParameters()); $entities = []; while ($data = $result->fetch()) { $entity = $this->targetRepository->hydrateEntity((array) $data); $entities[$entity->id] = $entity; } return new EntityContainer($entities); }
protected function fetch(QueryBuilder $builder, $hasJoin, array $values, IEntityPreloadContainer $preloadContainer = NULL) { $values = array_values(array_unique(array_filter($values, function ($value) { return $value !== NULL; }))); if (count($values) === 0) { return new EntityContainer([], $preloadContainer); } $primaryKey = $this->targetRepository->getMapper()->getStorageReflection()->getStoragePrimaryKey()[0]; $builder->andWhere('%column IN %any', $primaryKey, $values); $builder->addSelect(($hasJoin ? 'DISTINCT ' : '') . '%table.*', $builder->getFromAlias()); $result = $this->connection->queryArgs($builder->getQuerySQL(), $builder->getQueryParameters()); $entities = []; while ($data = $result->fetch()) { $entity = $this->targetRepository->hydrateEntity($data->toArray()); $entities[$entity->getValue('id')] = $entity; } return new EntityContainer($entities, $preloadContainer); }
protected function execute() { $builder = clone $this->builder; $builder->addSelect(($this->distinct ? 'DISTINCT ' : '') . $builder->getTableName() . '.*'); $result = $this->context->queryArgs($builder->buildSelectQuery(), $builder->getParameters()); $this->result = []; while ($data = $result->fetch()) { $this->result[] = $this->repository->hydrateEntity((array) $data); } }
private function queryAndFetchEntities($query, $args, IEntityPreloadContainer $preloadContainer = NULL) { $result = $this->connection->queryArgs($query, $args); $entities = []; while ($data = $result->fetch()) { $entity = $this->targetRepository->hydrateEntity($data->toArray()); $entities[$entity->getRawValue($this->metadata->relationship->property)][] = $entity; } return new EntityIterator($entities, $preloadContainer); }
private function queryAndFetchEntities($query, $args) { $result = $this->context->queryArgs($query, $args); $entities = []; while ($data = $result->fetch()) { $entity = $this->targetRepository->hydrateEntity((array) $data); $entities[$entity->getForeignKey($this->metadata->relationshipProperty)][] = $entity; } return new EntityIterator($entities); }
protected function execute() { $builder = clone $this->queryBuilder; $table = $builder->getFromAlias(); if (!$this->distinct) { $builder->select("[{$table}.*]"); } else { $builder->select("DISTINCT [{$table}.*]"); } $result = $this->connection->queryArgs($builder->getQuerySql(), $builder->getQueryParameters()); $this->result = []; while ($data = $result->fetch()) { $this->result[] = $this->repository->hydrateEntity($data->toArray()); } }