Blast\Orm\Query::execute PHP Method

execute() public method

Fetch data for entity
public execute ( string $option = HydratorInterface::HYDRATE_AUTO ) : array | SplStack | ArrayObject | boolean
$option string
return array | SplStack | ArrayObject | boolean
    public function execute($option = HydratorInterface::HYDRATE_AUTO)
    {
        //execute before events and proceed with builder from event
        $provider = $this->createProvider($this->getEntity());
        $event = $this->beforeExecute($provider->getEntity());
        if ($event->isCanceled()) {
            return false;
        }
        $builder = $event->getBuilder();
        //convert entity to adapter again
        $provider = $this->createProvider($builder->getEntity());
        $connection = $this->getConnection();
        $isSelect = $builder->getType() === QueryBuilder::SELECT;
        $sql = $this->getSQL();
        $statement = $isSelect ? $connection->executeQuery($sql, $this->getParameters(), $this->getParameterTypes()) : $connection->executeUpdate($sql, $this->getParameters(), $this->getParameterTypes());
        //execute after events and proceed with result from event
        $event = $this->afterExecute($isSelect ? $statement->fetchAll() : $statement, $provider->getEntity(), $builder);
        if ($event->isCanceled()) {
            return false;
        }
        $result = $this->convertTypesToPHPValues($provider, $event->getResult());
        $data = (new EntityHydrator($provider))->hydrate($result, $option);
        gc_collect_cycles();
        return $data;
    }