/**
  * {@inheritdoc}
  */
 public function getResult(QueryBuilder $queryBuilder)
 {
     $doctrineOrmPaginator = new DoctrineOrmPaginator($queryBuilder);
     // Disable output walkers by default (performance)
     $doctrineOrmPaginator->setUseOutputWalkers(false);
     return new Paginator($doctrineOrmPaginator);
 }
 /**
  * Calculates total count of query records
  * Notes: this method do not make any modifications of the given query
  *
  * @param Query|SqlQuery $query
  *
  * @return integer
  */
 public function getCount($query)
 {
     if ($this->useWalker($query)) {
         if (!$query->contains('DISTINCT')) {
             $query->setHint(CountWalker::HINT_DISTINCT, false);
         }
         $paginator = new Paginator($query);
         $paginator->setUseOutputWalkers(false);
         $result = $paginator->count();
     } else {
         if ($query instanceof Query) {
             $parserResult = QueryUtils::parseQuery($query);
             $parameterMappings = $parserResult->getParameterMappings();
             list($params, $types) = QueryUtils::processParameterMappings($query, $parameterMappings);
             $statement = $query->getEntityManager()->getConnection()->executeQuery('SELECT COUNT(*) FROM (' . $query->getSQL() . ') AS e', $params, $types);
         } elseif ($query instanceof SqlQuery) {
             $countQuery = clone $query->getQueryBuilder();
             $statement = $countQuery->resetQueryParts()->select('COUNT(*)')->from('(' . $query->getSQL() . ')', 'e')->execute();
         } else {
             throw new \InvalidArgumentException(sprintf('Expected instance of Doctrine\\ORM\\Query or Oro\\Bundle\\EntityBundle\\ORM\\SqlQuery, "%s" given', is_object($query) ? get_class($query) : gettype($query)));
         }
         $result = $statement->fetchColumn();
     }
     return $result ? (int) $result : 0;
 }
Exemple #3
0
 public function items(ItemsEvent $event)
 {
     if (!class_exists('Doctrine\\ORM\\Tools\\Pagination\\Paginator')) {
         return;
     }
     if (!$event->target instanceof Query) {
         return;
     }
     $event->stopPropagation();
     $useOutputWalkers = false;
     if (isset($event->options['wrap-queries'])) {
         $useOutputWalkers = $event->options['wrap-queries'];
     }
     $event->target->setFirstResult($event->getOffset())->setMaxResults($event->getLimit())->setHint(CountWalker::HINT_DISTINCT, $event->options['distinct']);
     $fetchJoinCollection = true;
     if ($event->target->hasHint(self::HINT_FETCH_JOIN_COLLECTION)) {
         $fetchJoinCollection = $event->target->getHint(self::HINT_FETCH_JOIN_COLLECTION);
     }
     $paginator = new Paginator($event->target, $fetchJoinCollection);
     $paginator->setUseOutputWalkers($useOutputWalkers);
     if (($count = $event->target->getHint(QuerySubscriber::HINT_COUNT)) !== false) {
         $event->count = intval($count);
     } else {
         $event->count = count($paginator);
     }
     $event->items = iterator_to_array($paginator);
 }
 public function paginate(QueryBuilder $query, $limit, $page)
 {
     $query->setMaxResults($limit)->setFirstResult($limit * ($page - 1));
     $paginator = new Paginator($query->getQuery());
     $paginator->setUseOutputWalkers(false);
     return $paginator;
 }
 public function getQueryResult($class, $params)
 {
     if (!$params instanceof OdataParameters) {
         $params = OdataParameters::parse($params);
     }
     $repository = $this->entityManager->getRepository($class);
     $queryBuilder = $repository->createQueryBuilder('X');
     $odataBuilder = new OdataQueryBuilderWrapper($queryBuilder);
     $odataBuilder->applyOdataParameters($params);
     if ($params->inlinecount) {
         //            $count = $odataBuilder->getInlineCount();
     }
     $query = $queryBuilder->getQuery();
     $inlineCount = null;
     $fetchJoinCollection = isset($params->expand);
     $fetchCount = $params->inlinecount;
     if ($fetchJoinCollection || $fetchCount) {
         $paginator = new Paginator($query, $fetchJoinCollection);
         $paginator->setUseOutputWalkers(false);
         if ($fetchCount) {
             $inlineCount = count($paginator);
         }
         $result = array();
         foreach ($paginator as $object) {
             $result[] = $object;
         }
     } else {
         $result = $query->getResult();
     }
     if ($inlineCount !== null) {
         return array('Results' => $result, 'InlineCount' => $inlineCount);
     }
     return $result;
 }
 public function getListagem($arrData = array(), $intPage = 1, $intQtdPage = 10)
 {
     $queryBuilder = $this->_em->createQueryBuilder();
     $queryBuilder->select('PessoaFisica')->addSelect('Login.dsLogin')->from('Application\\Entity\\PessoaFisica', 'PessoaFisica')->innerJoin('Application\\Entity\\Login', 'Login', 'with', 'Login.idPessoaFisica = PessoaFisica.idPessoaFisica')->setMaxResults($intQtdPage)->setFirstResult($intPage * ($intPage - 1))->orderBy('PessoaFisica.dsNome', 'asc');
     # bind nome
     if ($arrData['dsNome']) {
         $queryBuilder->andWhere($queryBuilder->expr()->like('PessoaFisica.dsNome', ':dsNome'))->setParameter('dsNome', '%' . $arrData['dsNome'] . '%');
     }
     # bind cpf
     if ($arrData['dsCpf']) {
         $queryBuilder->andWhere('PessoaFisica.dsCpf = :dsCpf')->setParameter('dsCpf', Format::clearCpfCnpj($arrData['dsCpf']));
     }
     # bind dsEmail
     if ($arrData['dsEmail']) {
         $queryBuilder->andWhere('PessoaFisica.dsEmail = :dsEmail')->setParameter('dsEmail', $arrData['dsEmail']);
     }
     # bind dsLogin
     if ($arrData['dsLogin']) {
         $queryBuilder->andWhere('Login.dsLogin = :dsLogin')->setParameter('dsLogin', $arrData['dsLogin']);
     }
     $query = $queryBuilder->getQuery();
     $registerPaginator = new Paginator($query);
     $registerPaginator->setUseOutputWalkers(false);
     $intCountResult = $registerPaginator->count();
     $arrDadosPaginator = array('qtdRegister' => $intCountResult, 'qtdPages' => ceil($intCountResult / $intQtdPage), 'pageActual' => $intPage, 'maxResult' => $intQtdPage, 'register' => $registerPaginator);
     return $arrDadosPaginator;
 }
 /**
  * Get the latest moderation actions
  *
  * @param  integer  $offset
  * @param  integer  $limit
  *
  * @return Paginator
  */
 public function getLatestModerations($offset, $limit)
 {
     $queryBuilder = $this->createQueryBuilder('mo')->select(array('mo', 'u', 'f', 'm', 't', 'b'))->join('mo.user', 'u')->leftJoin('mo.flag', 'f')->leftJoin('mo.message', 'm')->leftJoin('mo.topic', 't')->leftJoin('mo.board', 'b')->orderBy('mo.id', 'DESC');
     $query = $queryBuilder->getQuery();
     $query->setFirstResult($offset)->setMaxResults($limit);
     $paginator = new Paginator($query, false);
     return $paginator->setUseOutputWalkers(false);
 }
 public function getLatestTopicsByBoard(BoardInterface $board, $offset, $limit, $isDeleted)
 {
     $queryBuilder = $this->createQueryBuilder('t')->select(array('t'))->where('t.board = :board')->setParameter('board', $board)->addOrderBy('t.isPinned', 'DESC')->addOrderBy('t.lastMessageDate', 'DESC');
     if ($isDeleted !== null) {
         $queryBuilder->andWhere('t.isDeleted = :isDeleted')->setParameter('isDeleted', $isDeleted);
     }
     $query = $queryBuilder->getQuery()->setFirstResult($offset)->setMaxResults($limit);
     $paginator = new Paginator($query, false);
     return $paginator->setUseOutputWalkers(false);
 }
 public function getTotalCount() : int
 {
     $queryBuilder = $this->getQueryBuilder();
     $query = $queryBuilder->getQuery();
     $query->useQueryCache(true);
     $query->useResultCache(true);
     $paginator = new Paginator($query, true);
     $paginator->setUseOutputWalkers(false);
     return $paginator->count();
 }
Exemple #10
0
 public function listCompanies($page = 1, $pageSize = 20)
 {
     $query = $this->em->createQuery('SELECT c, cls FROM SSEICSSBundle:Company c LEFT JOIN c.class cls ORDER BY c.id ASC');
     $paginator = new Paginator($query);
     $paginator->setUseOutputWalkers(false);
     $totalRecruits = count($paginator);
     $pagesCount = ceil($totalRecruits / $pageSize);
     $paginator->getQuery()->setFirstResult($pageSize * ($page - 1))->setMaxResults($pageSize);
     $list = $query->getArrayResult();
     return ["totalRecruits" => $totalRecruits, "currentPage" => $page, "pagesCount" => $pagesCount, "list" => $list];
 }
 public function getListagem($arrData = array(), $intPage = 1, $intQtdPage = 10)
 {
     $queryBuilder = $this->_em->createQueryBuilder();
     $queryBuilder->select('Empreendimento')->from('Application\\Entity\\Empreendimento', 'Empreendimento')->innerJoin('Application\\Entity\\Municipio', 'Municipio', 'with', 'Municipio.idMunicipio = Empreendimento.idMunicipio')->innerJoin('Application\\Entity\\Estado', 'Estado', 'with', 'Estado.idEstado = Municipio.idEstado')->setMaxResults($intQtdPage)->setFirstResult($intPage * ($intPage - 1))->orderBy('Empreendimento.dsEmpreendimento', 'asc');
     $query = $queryBuilder->getQuery();
     $registerPaginator = new Paginator($query);
     $registerPaginator->setUseOutputWalkers(false);
     $intCountResult = $registerPaginator->count();
     $arrDadosPaginator = array('qtdRegister' => $intCountResult, 'qtdPages' => ceil($intCountResult / $intQtdPage), 'pageActual' => $intPage, 'maxResult' => $intQtdPage, 'register' => $registerPaginator);
     return $arrDadosPaginator;
 }
 /**
  * {@inheritdoc}
  */
 public function getTotalRows(QueryBuilder $queryBuilder, ColumnCollection $columns)
 {
     $builder = clone $queryBuilder;
     $having = $builder->getDQLPart('having');
     if (is_object($having)) {
         $this->replaceHaving($having, $columns, $builder);
     }
     $query = $builder->getQuery();
     $paginator = new Paginator($query, true);
     $paginator->setUseOutputWalkers(false);
     return $paginator->count();
 }
 /**
  * {@inheritdoc}
  */
 public function getTotalRows(QueryBuilder $queryBuilder, ColumnCollection $columns) : int
 {
     $builder = clone $queryBuilder;
     $having = $builder->getDQLPart('having');
     if (is_object($having)) {
         $this->replaceHaving($having, $columns, $builder);
     }
     $query = $builder->getQuery();
     $query->useQueryCache(true);
     $query->useResultCache(true, 3600, self::RESULT_CACHE_ID);
     $paginator = new Paginator($query, true);
     $paginator->setUseOutputWalkers(false);
     return $paginator->count();
 }
Exemple #14
0
 public function listRecruits($page = 1, $pageSize = 20)
 {
     $query = $this->em->createQuery('SELECT r, p FROM SSEICSSBundle:Recruit r LEFT JOIN r.suitableProjects p ORDER BY r.publishAt DESC');
     $paginator = new Paginator($query);
     $paginator->setUseOutputWalkers(false);
     $totalRecruits = count($paginator);
     $pagesCount = ceil($totalRecruits / $pageSize);
     $paginator->getQuery()->setFirstResult($pageSize * ($page - 1))->setMaxResults($pageSize);
     $list = $query->getArrayResult();
     foreach ($list as &$rec) {
         $rec['publishAt'] = $rec['publishAt']->format('Y-m-d');
     }
     return ["totalRecruits" => $totalRecruits, "currentPage" => $page, "pagesCount" => $pagesCount, "list" => $list];
 }
Exemple #15
0
 /**
  * paginate results
  *
  * @param $query - naming is a bit off as it can be a NativeQuery OR
  *  QueryBuilder, we'll survive eventually
  * @param int $page
  * @param $limit
  * @return array
  */
 public function paginate($query, $page, $limit, $userCount)
 {
     $totalPages = '';
     // setting current page
     $this->currentPage = $page;
     // set the limit
     $limit = (int) $limit;
     $this->count = $userCount;
     $this->totalPages = ceil($this->count / $limit);
     $newquery = $query->setFirstResult(($page - 1) * $limit)->setMaxResults($limit)->getQuery();
     $paginator = new DoctrinePaginator($newquery);
     $paginator->setUseOutputWalkers(false);
     // set total pages
     return $newquery->getResult();
 }
 /**
  *
  * @param array $arrData
  * @param integer $intPage
  * @param integer $intQtdPage
  * @return Paginator
  */
 public function getListagem($arrData = array(), $intPage = 1, $intQtdPage = 10)
 {
     $queryBuilder = $this->_em->createQueryBuilder();
     $queryBuilder->select('Perefil')->from('Application\\Entity\\Perfil', 'Perefil')->setFirstResult($intPage * ($intPage - 1))->orderBy('Perefil.noPerfil', 'asc');
     # bind nome
     if ($arrData['noPerfil']) {
         $queryBuilder->andWhere($queryBuilder->expr()->like('Perfil.dsNome', ':noPerfil'))->setParameter('noPerfil', '%' . $arrData['noPerfil'] . '%');
     }
     # bind situacao
     if ($arrData['inAtivo'] != '') {
         $queryBuilder->andWhere('Perefil.inAtivo = :inAtivo')->setParameter('inAtivo', $arrData['inAtivo']);
     }
     $query = $queryBuilder->getQuery();
     $registerPaginator = new Paginator($query);
     $registerPaginator->setUseOutputWalkers(false);
     $intCountResult = $registerPaginator->count();
     $arrDadosPaginator = array('qtdRegister' => $intCountResult, 'qtdPages' => ceil($intCountResult / $intQtdPage), 'pageActual' => $intPage, 'maxResult' => $intQtdPage, 'register' => $registerPaginator);
     return $arrDadosPaginator;
 }
 public function getData()
 {
     // Paginator is better if the query uses ManyToMany associations
     $usePaginator = $this->qb->getMaxResults() !== NULL || $this->qb->getFirstResult() !== NULL;
     $data = [];
     if ($usePaginator) {
         $paginator = new Paginator($this->getQuery(), $this->fetchJoinCollection);
         $paginator->setUseOutputWalkers($this->useOutputWalkers);
         // Convert paginator to the array
         foreach ($paginator as $result) {
             // Return only entity itself
             $data[] = $result;
         }
     } else {
         foreach ($this->qb->getQuery()->getResult() as $result) {
             // Return only entity itself
             $data[] = $result;
         }
     }
     return $data;
 }
 /**
  * @param ORM\Query
  * @return ResultPaginator
  */
 private function createPaginatedQuery(ORM\Query $query)
 {
     $paginated = new ResultPaginator($query, $this->fetchJoinCollection);
     $paginated->setUseOutputWalkers($this->useOutputWalkers);
     return $paginated;
 }
 /**
  * {@inheritdoc}
  */
 public function getResult(QueryBuilder $queryBuilder)
 {
     $doctrineOrmPaginator = new DoctrineOrmPaginator($queryBuilder);
     $doctrineOrmPaginator->setUseOutputWalkers($this->useOutputWalkers($queryBuilder));
     return new Paginator($doctrineOrmPaginator);
 }
 /**
  * Constructor.
  *
  * @param \Doctrine\ORM\Query|\Doctrine\ORM\QueryBuilder $query A Doctrine ORM query or query builder.
  * @param Boolean $fetchJoinCollection Whether the query joins a collection (true by default).
  * @param Boolean $useOutputWalkers Whether to use output walkers pagination mode
  */
 public function __construct($query, $fetchJoinCollection = true, $useOutputWalkers = null)
 {
     $this->paginator = new DoctrinePaginator($query, $fetchJoinCollection);
     $this->paginator->setUseOutputWalkers($useOutputWalkers);
 }
 public function testIterateComplexWithOutputWalker()
 {
     $dql = "SELECT g, COUNT(u.id) AS userCount FROM Doctrine\\Tests\\Models\\CMS\\CmsGroup g LEFT JOIN g.users u GROUP BY g HAVING COUNT(u.id) > 0";
     $query = $this->_em->createQuery($dql);
     $paginator = new Paginator($query);
     $paginator->setUseOutputWalkers(true);
     $this->assertCount(9, $paginator->getIterator());
 }
 /**
  * Get all results from offset
  *
  * NOTE: Looping pages in a single request will force the ENTIRE EntityManager to be cleared for memory saving purposes
  *
  * @return ArrayIterator
  */
 public function getResults($offset, $itemCountPerPage)
 {
     $qb = $this->getQueryBuilder();
     $filter = $this->getFilter();
     $i = 0;
     if ($this->hasResults) {
         $qb->getEntityManager()->clear();
     }
     foreach ($filter->getAllFieldValues() as $group => $fields) {
         $expressions = $group === 0 ? $qb->expr()->andX() : $qb->expr()->orX();
         foreach ($fields as $field => $values) {
             foreach ($values as $data) {
                 $param = ':param' . $i++;
                 $value = $this->prepareValue($data['value'], $field);
                 $mappedField = $this->getMappedField($field);
                 foreach ((array) $mappedField['field'] as $fieldName) {
                     $this->addJoin($fieldName, $group);
                     if (!isset($this->conditionalFields[$fieldName])) {
                         $expressions->add($this->getExpression($fieldName, $data['comparison'], $value, $param, $mappedField['type']));
                     } else {
                         $value = null;
                     }
                 }
                 if (null !== $value) {
                     $qb->setParameter(trim($param, ':'), $value);
                 }
             }
         }
         $qb->andWhere($expressions);
     }
     $keywordFields = $this->getOptions()->getKeywordFields();
     if (!empty($keywordFields) && null !== $filter->getKeywords()) {
         $hasFulltext = false;
         $orX = $qb->expr()->orX();
         foreach ($keywordFields as $field) {
             $mappedField = $this->getMappedField($field);
             foreach ((array) $mappedField['field'] as $fieldName) {
                 $this->addJoin($fieldName);
                 if ($mappedField['type'] === self::FIELD_TYPE_FULLTEXT) {
                     $hasFulltext = true;
                     $orX->add(sprintf('MATCH (%s) AGAINST (%s) > 1', $fieldName, ':fulltext_keyword'));
                 } else {
                     $orX->add($qb->expr()->like($fieldName, ':keyword'));
                 }
             }
         }
         $qb->andWhere($orX);
         $qb->setParameter('keyword', '%' . $filter->getKeywords() . '%');
         if ($hasFulltext) {
             $qb->setParameter('fulltext_keyword', $filter->getKeywords());
         }
     }
     if (null !== $filter->getSortField()) {
         $mappedSortField = $this->getMappedField($filter->getSortField());
         $this->addJoin($mappedSortField['field']);
         $qb->orderBy($mappedSortField['field'], $filter->getSortOrder());
     }
     $qb->setFirstResult($offset);
     $qb->setMaxResults($itemCountPerPage);
     $query = $qb->getQuery();
     $query->setHint(Query::HINT_CUSTOM_OUTPUT_WALKER, 'DoctrineExtensions\\Query\\MysqlWalker');
     $query->setHint('mysqlWalker.sqlCalcFoundRows', true);
     $paginator = new DoctrinePaginator($query, false);
     try {
         $results = $paginator->setUseOutputWalkers(false)->getIterator();
         $this->count = $qb->getEntityManager()->getConnection()->query('SELECT FOUND_ROWS()')->fetchColumn(0);
     } catch (\RuntimeException $ex) {
         $results = $paginator->setUseOutputWalkers(true)->getIterator();
         $this->count = $paginator->count();
     }
     if (0 == $this->count) {
         return new ArrayIterator([]);
     }
     foreach ($this->getConverters() as $converter) {
         $results = $converter->convert($results);
     }
     $this->hasResults = true;
     return $results;
 }
 /**
  * @param \Kdyby\Doctrine\QueryBuilder $qb
  * @param int $hydrationMode
  * @param \Carrooi\NoGrid\Condition[] $conditions
  * @param null|int $maxResults
  * @param null|int $firstResult
  * @param array $hints
  * @param bool $fetchJoinCollections
  * @param null|bool $useOutputWalkers
  * @return array
  */
 protected static function fetchDataFromQuery(QueryBuilder $qb, $hydrationMode = Query::HYDRATE_OBJECT, array $conditions, $maxResults = null, $firstResult = null, array $hints = [], $fetchJoinCollections = true, $useOutputWalkers = null)
 {
     foreach ($conditions as $condition) {
         self::makeWhere($qb, $condition);
     }
     $query = $qb->getQuery();
     $query->setHydrationMode($hydrationMode);
     foreach ($hints as $name => $value) {
         $query->setHint($name, $value);
     }
     if ($maxResults !== null || $firstResult !== null) {
         $result = new Paginator($query, $fetchJoinCollections);
         if ($useOutputWalkers !== null) {
             $result->setUseOutputWalkers($useOutputWalkers);
         }
     } else {
         $result = $query->getResult();
     }
     $data = [];
     foreach ($result as $item) {
         $data[] = is_array($item) && array_key_exists(0, $item) ? $item[0] : $item;
     }
     return $data;
 }
Exemple #24
0
 public function testQueryWalkerIsKept()
 {
     $dql = "SELECT u FROM Doctrine\\Tests\\Models\\CMS\\CmsUser u";
     $query = $this->_em->createQuery($dql);
     $query->setHint(Query::HINT_CUSTOM_TREE_WALKERS, array('Doctrine\\Tests\\ORM\\Functional\\CustomPaginationTestTreeWalker'));
     $paginator = new Paginator($query, true);
     $paginator->setUseOutputWalkers(false);
     $this->assertCount(1, $paginator->getIterator());
     $this->assertEquals(1, $paginator->count());
 }
 public function getResponse($buildQuery = true)
 {
     false === $buildQuery ?: $this->buildQuery();
     $fresults = new Paginator($this->execute(), true);
     $fresults->setUseOutputWalkers(false);
     $output = array('data' => array());
     foreach ($fresults as $item) {
         // Line formatter
         if (is_callable($this->lineFormatter)) {
             $callable = $this->lineFormatter;
             $item = call_user_func($callable, $item);
         }
         // Images
         foreach ($this->columns as $column) {
             $data = $column->getDql();
             /** @var ImageColumn $column */
             if ('image' === $column->getAlias()) {
                 if (true === $this->imagineBundle) {
                     $item[$data] = $this->renderImage($item[$data], $column);
                 } else {
                     $item[$data] = $this->twig->render('SgDatatablesBundle:Helper:render_image.html.twig', array('image_name' => $item[$data], 'path' => $column->getRelativePath()));
                 }
             }
             if ('gallery' === $column->getAlias()) {
                 $fields = explode('.', $data);
                 if (true === $this->imagineBundle) {
                     $galleryImages = '';
                     foreach ($item[$fields[0]] as $image) {
                         $galleryImages = $galleryImages . $this->renderImage($image[$fields[1]], $column);
                     }
                     $item[$fields[0]] = $galleryImages;
                 } else {
                     throw new InvalidArgumentException('getResponse(): Bundle "LiipImagineBundle" does not exist or it is not enabled.');
                 }
             }
         }
         $output['data'][] = $item;
     }
     $outputHeader = array('draw' => (int) $this->requestParams['draw'], 'recordsTotal' => (int) $this->getCountAllResults($this->rootEntityIdentifier), 'recordsFiltered' => (int) $this->getCountFilteredResults($this->rootEntityIdentifier));
     $json = $this->serializer->serialize(array_merge($outputHeader, $output), 'json');
     $response = new Response($json);
     $response->headers->set('Content-Type', 'application/json');
     return $response;
 }
 public function getResponse($buildQuery = true)
 {
     false === $buildQuery ?: $this->buildQuery();
     $fresults = new Paginator($this->execute(), true);
     $fresults->setUseOutputWalkers(false);
     $output = array('data' => array());
     foreach ($fresults as $item) {
         if (is_callable($this->lineFormatter)) {
             $callable = $this->lineFormatter;
             $item = call_user_func($callable, $item);
         }
         $output['data'][] = $item;
     }
     $outputHeader = array('draw' => (int) $this->requestParams['draw'], 'recordsTotal' => (int) $this->getCountAllResults($this->rootEntityIdentifier), 'recordsFiltered' => (int) $this->getCountFilteredResults($this->rootEntityIdentifier));
     $json = $this->serializer->serialize(array_merge($outputHeader, $output), 'json');
     $response = new Response($json);
     $response->headers->set('Content-Type', 'application/json');
     return $response;
 }
Exemple #27
0
 /**
  * @return int
  */
 public function getCount()
 {
     $paginator = new Paginator($this->getQuery(), $this->fetchJoinCollection);
     $paginator->setUseOutputWalkers($this->useOutputWalkers);
     return $paginator->count();
 }
 /**
  * Get response.
  *
  * @param bool $buildQuery
  * @param bool $outputWalkers
  *
  * @return Response
  * @throws Exception
  */
 public function getResponse($buildQuery = true, $outputWalkers = false)
 {
     false === $buildQuery ?: $this->buildQuery();
     $this->paginator = new Paginator($this->execute(), true);
     $this->paginator->setUseOutputWalkers($outputWalkers);
     $formatter = new DatatableFormatter($this);
     $formatter->runFormatter();
     $outputHeader = array('draw' => (int) $this->requestParams['draw'], 'recordsTotal' => (int) $this->getCountAllResults($this->rootEntityIdentifier), 'recordsFiltered' => (int) $this->getCountFilteredResults($this->rootEntityIdentifier, $buildQuery));
     $fullOutput = array_merge($outputHeader, $formatter->getOutput());
     $fullOutput = $this->applyResponseCallbacks($fullOutput);
     $json = $this->serializer->serialize($fullOutput, 'json');
     $response = new Response($json);
     $response->headers->set('Content-Type', 'application/json');
     return $response;
 }
 /**
  * Get response.
  *
  * @param bool $buildQuery
  *
  * @return Response
  * @throws Exception
  */
 public function getResponse($buildQuery = true)
 {
     false === $buildQuery ?: $this->buildQuery();
     $fresults = new Paginator($this->execute(), true);
     $fresults->setUseOutputWalkers(false);
     $output = array('data' => array());
     foreach ($fresults as $item) {
         if (is_callable($this->lineFormatter)) {
             $callable = $this->lineFormatter;
             $item = call_user_func($callable, $item);
         }
         foreach ($this->columns as $column) {
             $column->renderContent($item, $this);
             /** @var ActionColumn $column */
             if ('action' === $column->getAlias()) {
                 $column->checkVisibility($item);
             }
         }
         $output['data'][] = $item;
     }
     $outputHeader = array('draw' => (int) $this->requestParams['draw'], 'recordsTotal' => (int) $this->getCountAllResults($this->rootEntityIdentifier), 'recordsFiltered' => (int) $this->getCountFilteredResults($this->rootEntityIdentifier, $buildQuery));
     $fullOutput = array_merge($outputHeader, $output);
     $fullOutput = $this->applyResponseCallbacks($fullOutput);
     $json = $this->serializer->serialize($fullOutput, 'json');
     $response = new Response($json);
     $response->headers->set('Content-Type', 'application/json');
     return $response;
 }
Exemple #30
0
 /**
  * @param \Kdyby\Persistence\Queryable $repository
  * @param ResultSet $resultSet
  * @param \Doctrine\ORM\Tools\Pagination\Paginator $paginatedQuery
  * @return integer
  */
 public function count(Queryable $repository, ResultSet $resultSet = NULL, Paginator $paginatedQuery = NULL)
 {
     if ($query = $this->doCreateCountQuery($repository)) {
         return (int) $this->toQuery($query)->getSingleScalarResult();
     }
     if ($this->lastQuery && $this->lastQuery instanceof NativeQueryWrapper) {
         $class = get_called_class();
         throw new NotSupportedException("You must implement your own count query in {$class}::doCreateCountQuery(), Paginator from Doctrine doesn't support NativeQueries.");
     }
     if ($paginatedQuery !== NULL) {
         return $paginatedQuery->count();
     }
     $query = $this->getQuery($repository)->setFirstResult(NULL)->setMaxResults(NULL);
     $paginatedQuery = new Paginator($query, $resultSet ? $resultSet->getFetchJoinCollection() : TRUE);
     $paginatedQuery->setUseOutputWalkers($resultSet ? $resultSet->getUseOutputWalkers() : NULL);
     return $paginatedQuery->count();
 }