/** * @param string $alias * @return Expr\Andx|Expr\Comparison|Expr\Composite|null */ public function getWhere($alias) { $expr = new Expr\Andx(); foreach ($this->criteria as $key => $value) { $expr->add(new Expr\Comparison(sprintf("%s.%s", $alias, $key), Expr\Comparison::EQ, $value)); } return $expr->count() != 0 ? $expr : null; }
/** * @param string $alias * @return Expr\Andx|Expr\Comparison|Expr\Composite|null */ public function getWhere($alias) { $expr = new Expr\Andx(); foreach ($this->fits as $fit) { if ($fit instanceof WhereFitInterface) { $expr->add($fit->getWhere($alias)); } } return $expr->count() != 0 ? $expr : null; }
protected function applySpecifications(QueryBuilder $queryBuilder, $alias) { $andX = new Query\Expr\Andx(); foreach ($this->specifications as $specification) { array_map([$andX, 'add'], array_filter((array) $specification->match($queryBuilder, $alias))); } if ($andX->count() > 0) { $queryBuilder->andWhere($andX); } }
public function createGridQueryBuilder($entityClass, $params) { $qb = $this->em->createQueryBuilder(); $qb->from($entityClass, 'o'); $this->_addJoinEntity($qb, $params); $searches = array(); if (isset($params['search']['value'])) { $searches = explode(" ", trim($params['search']['value'])); for ($index = 0; $index < count($searches); $index++) { $qb->setParameter('main_search_' . $index, '%' . $searches[$index] . '%'); } } $fieldsSearch = new Expr\Andx(); $globalSearch = new Expr\Orx(); if (isset($params['columns'])) { foreach ($params['columns'] as $columns) { if ($columns['name'] && substr($columns['name'], 0, 1) != '_') { $field = $this->_getFieldName($columns['name']); $fieldAlias = str_replace(".", "_", $columns['name']); for ($index = 0; $index < count($searches); $index++) { $globalSearch->add($qb->expr()->like($field, ':main_search_' . $index)); } if ($columns['search']['value']) { $fieldsSearch->add($qb->expr()->like($field, ':' . $fieldAlias . '_search')); $qb->setParameter($fieldAlias . '_search', '%' . $columns['search']['value'] . '%'); } } } } $searchWhere = new Expr\Andx(); if (isset($fieldsSearch)) { $searchWhere->add($fieldsSearch); } if (isset($globalSearch)) { $searchWhere->add($globalSearch); } if ($searchWhere->count()) { $qb->andWhere($searchWhere); } return $qb; }