public function setUp() { $this->queryConfig = new QueryConfig(); $this->queryConfig->setLimit(5)->setSelect(array('t.a', 't.b', 't.c'))->setPage(2)->setOrderBy(array('t.d' => true, 't.e' => false))->addParameter('query', '%xxx%')->getConstraints()->add('LOWER(t.a) LIKE :query')->add('LOWER(t.c) LIKE :query'); $this->queryBuilder = new QueryBuilderMock(); $this->queryBuilder->from('Table', 't'); if ($this->queryConfig->getConstraints()->count() > 0) { $this->queryBuilder->andWhere($this->queryConfig->getConstraints()); } if (count($this->queryConfig->getParameters()) > 0) { $this->queryBuilder->setParameters($this->queryConfig->getParameters()); } $this->dataProvider = new DataProvider(); }
/** * {@inheritdoc} */ public function find(QueryBuilder $queryBuilder, QueryConfigInterface $queryConfig) { /* Add where clauses if there is any query search filter */ if ($queryConfig->getConstraints()->count() > 0) { $queryBuilder->andWhere($queryConfig->getConstraints()); } if (count($queryConfig->getParameters()) > 0) { foreach ($queryConfig->getParameters() as $key => $value) { $queryBuilder->setParameter($key, $value); } } $rows = $this->getRows($queryBuilder, $queryConfig); $count = 0; if ($queryConfig->getLimit() > 0 && count($rows) > 0) { if (count($rows) === $queryConfig->getLimit() || $queryConfig->getPage() > 1) { $count = $this->getCount($queryBuilder, $queryConfig); } } return new QueryResult($rows, $count); }