/** * @param Parameters $params * @param Builder $queryBuilder * * @return Builder */ public function createQuery($params, $queryBuilder) { $this->value = $params->toArray(); /* * search jobs by keywords */ if (isset($this->value['params']['search']) && !empty($this->value['params']['search'])) { $search = strtolower($this->value['params']['search']); $expression = $queryBuilder->expr()->operator('$text', ['$search' => $search]); $queryBuilder->field(null)->equals($expression->getQuery()); } if (isset($this->value['params']['status']) && !empty($this->value['params']['status'])) { if ($this->value['params']['status'] != 'all') { $queryBuilder->field('status.name')->equals($this->value['params']['status']); } } else { $queryBuilder->field('status.name')->equals(Status::CREATED); } if (isset($this->value['params']['companyId']) && !empty($this->value['params']['companyId'])) { $queryBuilder->field('organization')->equals(new \MongoId($this->value['params']['companyId'])); } if (isset($this->value['sort'])) { foreach (explode(",", $this->value['sort']) as $sort) { $queryBuilder->sort($this->filterSort($sort)); } } return $queryBuilder; }
/** * {@inheritdoc} */ public function addFieldFilter($field, $operator, $value) { $field = sprintf("%s.%s.%s-%s", ProductQueryUtility::NORMALIZED_FIELD, 'completenesses', $this->context->getScopeCode(), $this->context->getLocaleCode()); $value = intval($value); if ($operator === '=') { $this->qb->field($field)->equals($value); } else { $this->qb->field($field)->lt($value); } return $this; }
public function addFilter(Builder &$qb, $id, $data) { switch ($data['comparator']) { case self::COMP_BEFORE: $qb->field($this->field)->lte($data['value']); break; case self::COMP_AFTER: $qb->field($this->field)->gte($data['value']); break; } }
/** * {@inheritdoc} */ public function addFieldFilter($field, $operator, $value) { $field = '_id'; $value = is_array($value) ? $value : [$value]; if ($operator === 'NOT IN') { $this->qb->field($field)->notIn($value); } else { $this->qb->field($field)->in($value); } return $this; }
/** * {@inheritdoc} */ public function addFieldFilter($field, $operator, $value) { $value = is_array($value) ? $value : [$value]; $value = array_map('intval', $value); $field = 'groupIds'; if ($operator === 'NOT IN') { $this->qb->field($field)->notIn($value); } else { $this->qb->field($field)->in($value); } return $this; }
/** * {@inheritdoc} */ public function addFieldFilter($field, $operator, $value) { $field = sprintf('%s.%s', ProductQueryUtility::NORMALIZED_FIELD, $field); switch ($operator) { case 'BETWEEN': $this->qb->field($field)->gte($this->getTimestamp($value[0])); $this->qb->field($field)->lte($this->getTimestamp($value[1], true)); break; case '>': $this->qb->field($field)->gt($this->getTimestamp($value, true)); break; case '<': $this->qb->field($field)->lt($this->getTimestamp($value)); break; case '=': $this->qb->field($field)->gte($this->getTimestamp($value)); $this->qb->field($field)->lte($this->getTimestamp($value, true)); break; case 'EMPTY': $this->qb->field($field)->exists(false); break; default: $this->qb->addAnd($this->qb->expr()->addOr($this->qb->expr()->field($field)->lte($this->getTimestamp($value['from'])))->addOr($this->qb->expr()->field($field)->gte($this->getTimestamp($value['to'], true)))); } return $this; }
/** * {@inheritdoc} */ public function addFieldFilter($field, $operator, $value) { $field = sprintf('%s.%s', ProductQueryUtility::NORMALIZED_FIELD, $field); if ('EMPTY' === $operator) { $this->qb->field($field)->exists(false); } elseif ('IN' === $operator) { $this->qb->field($field)->in($value); } else { if (strpos($value, '/') !== false) { $value = new \MongoRegex($value); } $this->qb->field($field)->equals($value); } return $this; }
/** * @param array $params * @param QueryBuilder $queryBuilder * @return mixed */ public function createQuery($params, $queryBuilder) { if (isset($params['search']) && !empty($params['search'])) { $search = strtolower($params['search']); $expr = $queryBuilder->expr()->operator('$text', ['$search' => $search]); $queryBuilder->field(null)->equals($expr->getQuery()); } if (isset($params['location']) && isset($params['location']->coordinates)) { $coordinates = $params['location']->coordinates->getCoordinates(); $queryBuilder->field('preferredJob.desiredLocations.coordinates')->geoWithinCenter($coordinates[0], $coordinates[1], (double) $params['d'] / 100); } $queryBuilder->addOr($queryBuilder->expr()->field('permissions.view')->equals($this->user->getId()))->addOr($queryBuilder->expr()->field('status.name')->equals(Status::PUBLIC_TO_ALL)); //$q = $queryBuilder->getQuery()->debug(); return $queryBuilder; }
/** * get a field condition to add to the querybuilder * * @param string $field name of field to get * @param bool $expr should i wrap this in expr() * * @return Builder|Expr */ protected function getField($field, $expr) { if ($expr) { return $this->builder->expr()->field($field); } return $this->builder->field($field); }
/** * @param QueryBuilder $qb * @param Criteria $criteria */ protected function buildWhereClause(Builder $qb, Criteria $criteria) { foreach ($criteria as $key => $value) { if ($this->metadata->hasField($key) || $this->metadata->hasAssociation($key)) { $qb->field($key)->equals($value); } } }
/** * {@inheritdoc} */ public function addAttributeFilter(AbstractAttribute $attribute, $operator, $value) { list($data, $currency) = explode(' ', $value); $data = (double) $data; $field = ProductQueryUtility::getNormalizedValueFieldFromAttribute($attribute, $this->context); $field = sprintf('%s.%s', ProductQueryUtility::NORMALIZED_FIELD, $field); $field = sprintf('%s.%s', $field, $currency); $fieldData = sprintf('%s.data', $field); switch ($operator) { case '<': $this->qb->field($fieldData)->lt($data); break; case '<=': $this->qb->field($fieldData)->lte($data); break; case '>': $this->qb->field($fieldData)->gt($data); break; case '>=': $this->qb->field($fieldData)->gte($data); break; case 'EMPTY': $this->qb->field($fieldData)->equals(null); break; default: $this->qb->field($fieldData)->equals($data); } return $this; }
protected function initTestList() { $this->queryBuilder->sort('date', 'DESC'); $this->listCount = $this->queryBuilder->getQuery()->execute()->count(); $this->initPagenation(); if ($this->listCount > 0) { $this->queryBuilder->field('userId')->equals(''); $this->list = $this->queryBuilder = $this->queryBuilder->getQuery()->execute(); } }
/** * {@inheritdoc} */ public function addFieldFilter($field, $operator, $value) { $value = is_array($value) ? $value : [$value]; if ($operator === 'NOT IN') { $this->qb->field($field)->notIn($value); } else { if (in_array('empty', $value)) { unset($value[array_search('empty', $value)]); $expr = new Expr(); $expr = $expr->field($field)->exists(false); $this->qb->addOr($expr); } if (count($value) > 0) { $expr = new Expr(); $expr->field($field)->in($value); $this->qb->addOr($expr); } } return $this; }
public function addFilter(Builder &$qb, $id, $data) { switch ($data['comparator']) { case self::COMP_EQUALS: $qb->field($this->field)->equals($data['value']); break; case self::COMP_DOESNOTEQUAL: $qb->field($this->field)->notEqual($data['value']); break; case self::COMP_CONTAINS: $mongoregex = new \MongoRegex("/.*" . $data['value'] . ".*/i"); $qb->field($this->field)->equals($mongoregex); break; case self::COMP_DOESNOTCONTAIN: $mongoregex = new \MongoRegex("/.*" . $data['value'] . ".*/i"); $qb->field($this->field)->not($mongoregex); break; case self::COMP_STARTSWITH: $mongoregex = new \MongoRegex("/^" . $data['value'] . "/i"); $qb->field($this->field)->equals($mongoregex); break; case self::COMP_ENDSWITH: $mongoregex = new \MongoRegex("/.*" . $data['value'] . "\$/i"); $qb->field($this->field)->equals($mongoregex); break; } }
/** * @param $params * @param \Doctrine\ODM\MongoDB\Query\Builder $queryBuilder * * @return mixed */ public function createQuery($params, $queryBuilder) { if (!empty($params['text'])) { $queryBuilder->text($params['text']); } $queryBuilder->field('isDraft')->equals(false); if (isset($params['sort'])) { foreach (explode(",", $params['sort']) as $sort) { $queryBuilder->sort($this->filterSort($sort)); } } return $queryBuilder; }
/** * Creates a query for filtering organizations * * @see \Core\Repository\Filter\AbstractPaginationQuery::createQuery() * @param $params * @param \Doctrine\ODM\MongoDB\Query\Builder $queryBuilder * @return mixed */ public function createQuery($params, $queryBuilder) { $userID = $this->auth->getUser()->getId(); if ($params instanceof Parameters) { $value = $params->toArray(); } else { $value = $params; } if (isset($params['text']) && $params['text']) { $queryBuilder->text($params['text']); } /* * We only show organizations to which the user has view permissions. */ $queryBuilder->field('permissions.view')->equals($userID); if (!isset($value['sort'])) { $value['sort'] = '-date'; } $queryBuilder->sort($this->filterSort($value['sort'])); return $queryBuilder; }
/** * {@inheritdoc} */ public function innerJoin($join, $alias) { $this->queryBuilder->field($join)->notEqual(null); return $this; }
/** * @param Builder $queryBuilder * @param mixed[] $criteria */ private function applyCriteria(Builder $queryBuilder, array $criteria = null) { foreach ($criteria as $property => $value) { if ($value === null) { $queryBuilder->field($this->getProperty($property, $queryBuilder))->equals(null); } elseif (is_array($value)) { $queryBuilder->field($this->getProperty($property, $queryBuilder))->in($value); } elseif ($value !== null) { $queryBuilder->field($this->getProperty($property, $queryBuilder))->equals($value); } } }
/** * Add conditions according to given filters. * * @param Builder $builder * @param array $locales * @param array $filters */ protected function addTranslationFilter(Builder $builder, array $locales = null, array $filters = null) { if (null != $locales) { $qb = $this->createQueryBuilder()->hydrate(false)->distinct('id')->field('translations.locale')->in($locales); foreach ($locales as $locale) { if (!empty($filters[$locale])) { $builder->addAnd($builder->expr()->field('translations.content')->equals(new \MongoRegex(sprintf('/%s/i', $filters[$locale])))->field('translations.locale')->equals($locale)); } } $ids = $qb->getQuery()->execute(); if (count($ids) > 0) { $builder->field('id')->in($ids); } } }
public function executeByDoctrineQuery(QueryBuilder $query) { // Hide deleted items $query->field('deleted')->equals(false); $this->applySearch($query); $this->applyFilters($query); $this->applyReduce($query); $this->applySort($query); // Calculate total count of items before applying the limits $this->total = $query->getQuery()->execute()->count(); $query->skip($this->offset); $query->limit($this->amount); return $query->getQuery()->execute(); }