Blast\Orm\Hydrator\EntityHydrator::hydrateEntity PHP Method

hydrateEntity() protected method

Hydrates data to an entity
protected hydrateEntity ( $data ) : array | ArrayObject | object | stdClass
$data
return array | ArrayObject | object | stdClass
    protected function hydrateEntity($data)
    {
        $entity = clone $this->provider->getEntity();
        // hydrate to array object
        if (method_exists($entity, 'populate') || method_exists($entity, 'exchangeArray')) {
            $hydrator = $this->getArraySerizableHydrator();
            $entity = $hydrator->hydrate($data, $entity);
            //add relations
            $data = $this->addRelationsToData($data, $entity);
            $entity = $hydrator->hydrate($data, $entity);
        }
        $data = $this->camelizeKeys($data);
        $classMethodHydrator = $this->getClassMethodsHydrator();
        $propertyHydrator = $this->getObjectPropertyHydrator();
        // hydrate entity data
        $entity = $classMethodHydrator->hydrate($data, $propertyHydrator->hydrate($data, $entity));
        //add relations
        $data = $this->addRelationsToData($data, $entity);
        // hydrate entity with relation data to add hydrated entity to relation
        return $classMethodHydrator->hydrate($data, $propertyHydrator->hydrate($data, $entity));
    }