Пример #1
0
 /**
  * Add name first letter where condition to query builder
  *
  * @param  Doctrine\ORM\QueryBuilder $qb
  * @param  array                     $letters
  * @return void
  */
 private function addNameRangeWhere($qb, array $letters)
 {
     $orx = $qb->expr()->orx();
     foreach ($letters as $letter) {
         $orx->add($qb->expr()->like('u.username', $qb->expr()->literal(substr($letter, 0, 1) . '%')));
     }
     $qb->andWhere($orx);
 }
Пример #2
0
 /**
  * Creates query for given filters in stored in session
  *
  * @param array                     $sessionData  Filters
  * @param Doctrine\ORM\Query\Expr   $query        Query operator
  * @param Doctrine\ORM\QueryBuilder $queryBuilder Query builder
  *
  * @return Doctrine\ORM\Query\Expr
  */
 private function buildSessionFilters($sessionData, $query, $queryBuilder)
 {
     foreach ($sessionData as $key => $value) {
         if ($key) {
             if ($key == 'filterApproved') {
                 $query->add($queryBuilder->expr()->eq('c.status', 0));
             } else {
                 $query->add($queryBuilder->expr()->eq('c.status', $value));
             }
         }
     }
     return $query;
 }
Пример #3
0
 /**
  * @param $field
  * @param $operation
  * @param null   $value
  * @param string $alias
  */
 protected function makeExpression($field, $operation, $value = null, $alias = self::DEFAULT_TABLE_ALIAS)
 {
     if (!is_array($value)) {
         $value = $this->queryBuilder->expr()->literal($value);
     }
     if ($field) {
         $field = $this->getFullFieldName($field, $alias);
     }
     $expression = null;
     switch (strtolower($operation)) {
         case '>':
             $expression = $this->queryBuilder->expr()->gt($field, $value);
             break;
         case '=':
             $expression = $this->queryBuilder->expr()->eq($field, $value);
             break;
         case '<':
             $expression = $this->queryBuilder->expr()->lt($field, $value);
             break;
         case '>=':
             $expression = $this->queryBuilder->expr()->gte($field, $value);
             break;
         case '<=':
             $expression = $this->queryBuilder->expr()->lte($field, $value);
             break;
         case '<>':
             $expression = $this->queryBuilder->expr()->neq($field, $value);
             break;
         case 'isnull':
             $expression = $this->queryBuilder->expr()->isNull($field);
             break;
         case 'isnotnull':
             $expression = $this->queryBuilder->expr()->isNotNull($field);
             break;
         case 'in':
             $expression = $this->queryBuilder->expr()->in($field, $value);
             break;
         case 'orx':
             $expression = $this->queryBuilder->expr()->orX()->addMultiple($this->makeExpressions($value, $alias));
             break;
         case 'andx':
             $expression = $this->queryBuilder->expr()->andX()->addMultiple($this->makeExpressions($value, $alias));
             break;
         case 'notin':
             $expression = $this->queryBuilder->expr()->notIn($field, $value);
             break;
         case 'contains':
             /*
              * @todo implementar o metodo contains
              */
             // $expression = $this->queryBuilder->expr()->contains($field, $value);
             break;
         case 'like':
             $expression = $this->queryBuilder->expr()->like('LOWER(' . $field . ')', strtolower($value));
             break;
         case 'notlike':
             $expression = $this->queryBuilder->expr()->notLike($field, $value);
             break;
         case 'isinstanceof':
             $expression = $alias . ' INSTANCE OF ' . $value;
             break;
         case 'between':
             $expression = $this->queryBuilder->expr()->between($field, $this->queryBuilder->expr()->literal($value[0]), $this->queryBuilder->expr()->literal($value[1]));
             break;
         case 'dateparteq':
             $expression = $this->queryBuilder->expr()->eq("DATEPART('" . $value['format'] . "', " . $field . ')', $value['value']);
     }
     return $expression;
 }