Exemplo n.º 1
0
 /**
  * Transforms a fully-built query builder into a row collection with the results
  *
  * @param QueryBuilder        $queryBuilder
  *
  * @param Query               $query
  * @param DataSourceInterface $dataSource
  *
  * @return array
  * @throws ColumnNotSelectedException
  * @throws \Netdudes\DataSourceryBundle\DataSource\Driver\Doctrine\Exception\ColumnNotFoundException
  *
  */
 protected function fetchData(QueryBuilder $queryBuilder, Query $query, DataSourceInterface $dataSource)
 {
     $fields = $dataSource->getFields();
     $rowCollection = [];
     $queryResults = $queryBuilder->getQuery()->getResult();
     foreach ($queryResults as $queryResultsRow) {
         $row = [];
         foreach ($fields as $queryBuilderDataSourceField) {
             if (!in_array($queryBuilderDataSourceField->getUniqueName(), $query->getSelect(), true)) {
                 continue;
             }
             $row[$queryBuilderDataSourceField->getUniqueName()] = $this->getCellValueByDataSourceField($queryResultsRow, $queryBuilderDataSourceField, $fields);
         }
         $rowCollection[] = $row;
     }
     $event = new PostFetchEvent($dataSource, $rowCollection);
     $dataSource->getEventDispatcher()->dispatch(self::EVENT_POST_FETCH, $event);
     return $event->data;
 }