/**
  * Evaluate
  *
  * @param Environment $env
  */
 public function evaluate(EnvironmentInterface $env)
 {
     $qb = $env->queryBuilder;
     $value = $env->newParamName();
     switch ($this->operator) {
         case 'equals':
             $qb->andWhere('a.' . $this->attribute . ' = :' . $value);
             $qb->setParameter($value, $this->getRight()->getValue());
             break;
         case 'notequals':
             $qb->andWhere('a.' . $this->attribute . ' <> :' . $value);
             $qb->setParameter($value, $this->getRight()->getValue());
             break;
         case 'contains':
             $qb->andWhere('a.' . $this->attribute . ' LIKE :' . $value);
             $qb->setParameter($value, '%' . $this->getRight()->getValue() . '%');
             break;
         case 'greaterthan':
             $qb->andWhere('a.' . $this->attribute . ' > :' . $value);
             $qb->setParameter($value, $this->getRight()->getValue());
             break;
         case 'lessthan':
             $qb->andWhere('a.' . $this->attribute . ' < :' . $value);
             $qb->setParameter($value, $this->getRight()->getValue());
             break;
     }
 }
 /**
  * Evaluate
  *
  * @param Environment $env
  */
 public function evaluate(EnvironmentInterface $env)
 {
     $qb = $env->queryBuilder;
     $value = $env->newParamName();
     $joins = $qb->getDqlPart('join');
     if (!isset($joins[$this->relation])) {
         $qb->leftJoin('a.' . $this->relation, $this->relation);
     }
     switch ($this->operator) {
         case 'equals':
             $qb->andWhere($this->relation . '.' . $this->attribute . ' = :' . $value);
             $qb->setParameter($value, $this->getRight()->getValue());
             break;
         case 'notequals':
             $qb->andWhere($this->relation . '.' . $this->attribute . ' <> :' . $value);
             $qb->setParameter($value, $this->getRight()->getValue());
             break;
         case 'contains':
             $qb->andWhere($this->relation . '.' . $this->attribute . ' LIKE :' . $value);
             $qb->setParameter($value, '%' . $this->getRight()->getValue() . '%');
             break;
         case 'greaterthan':
             $qb->andWhere($this->relation . '.' . $this->attribute . ' > :' . $value);
             $qb->setParameter($value, $this->getRight()->getValue());
             break;
         case 'lessthan':
             $qb->andWhere($this->relation . '.' . $this->attribute . ' < :' . $value);
             $qb->setParameter($value, $this->getRight()->getValue());
             break;
     }
 }
 /**
  * Evaluate
  *
  * @param Environment $env
  */
 public function evaluate(EnvironmentInterface $env)
 {
     $qb = $env->queryBuilder;
     $paramName = $env->newParamName();
     $paramValue = $env->newParamName();
     $paramContent = $env->newParamName();
     $paramVs = $env->newParamName();
     $paramValues = $env->newParamName();
     $paramAttribute = $env->newParamName();
     $paramAddress = $env->newParamName();
     $subQuery = $env->cloneQueryBuilder();
     $rootAliases = $subQuery->getRootAliases();
     $subQuery->innerJoin($rootAliases[0] . '.valueSet', $paramVs)->innerJoin($paramVs . '.values', $paramValues)->innerJoin($paramValues . '.attribute', $paramAttribute)->innerJoin($paramValues . '.address', $paramAddress)->andWhere($paramAttribute . '.name = :' . $paramName);
     switch ($this->operator) {
         case 'equals':
             $subQuery->andWhere($paramAddress . '.city = :' . $paramValue);
             $qb->setParameter($paramValue, $this->getRight()->getValue());
             break;
         case 'notequals':
             $subQuery->andWhere($paramAddress . '.city <> :' . $paramValue);
             $qb->setParameter($paramValue, $this->getRight()->getValue());
             break;
         case 'contains':
             $subQuery->andWhere($paramAddress . '.city LIKE :' . $paramValue);
             $qb->setParameter($paramValue, '%' . $this->getRight()->getValue() . '%');
             break;
     }
     $qb->andWhere($qb->expr()->in('a', $subQuery->getDQL()))->setParameter($paramName, $this->getAttribute());
 }
示例#4
0
 /**
  * Evaluate
  *
  * @param EnvironmentInterface $env
  */
 public function evaluate(EnvironmentInterface $env)
 {
     $qb = $env->queryBuilder;
     $paramTemplate = $env->newParamName();
     $paramValue = $env->newParamName();
     $paramVs = $env->newParamName();
     $rootAliases = $qb->getRootAliases();
     $qb->innerJoin($rootAliases[0] . '.valueSet', $paramVs)->innerJoin($paramVs . '.template', $paramTemplate);
     switch ($this->operator) {
         case 'in':
             $qb->andWhere($paramTemplate . '.id IN (:' . $paramValue . ')');
             break;
         case 'notin':
             $qb->andWhere($paramTemplate . '.id NOT IN (:' . $paramValue . ')');
             break;
     }
     $qb->setParameter($paramValue, $this->getRight()->getValue());
 }
 /**
  * Evaluate
  *
  * @param Environment $env
  */
 public function evaluate(EnvironmentInterface $env)
 {
     $qb = $env->queryBuilder;
     $paramName = $env->newParamName();
     $paramValue = $env->newParamName();
     $paramVs = $env->newParamName();
     $paramValues = $env->newParamName();
     $paramAttribute = $env->newParamName();
     $paramOption = $env->newParamName();
     $subQuery = $env->cloneQueryBuilder();
     $rootAliases = $subQuery->getRootAliases();
     $subQuery->innerJoin($rootAliases[0] . '.valueSet', $paramVs)->innerJoin($paramVs . '.values', $paramValues)->innerJoin($paramValues . '.attribute', $paramAttribute)->innerJoin($paramValues . '.options', $paramOption)->andWhere($paramAttribute . '.name = :' . $paramName);
     $subQuery->andWhere($paramOption . '.id IN (:' . $paramValue . ')');
     $qb->setParameter($paramValue, $this->getRight()->getValue());
     switch ($this->operator) {
         case 'in':
             $qb->andWhere($qb->expr()->in('a', $subQuery->getDQL()));
             break;
         case 'notin':
             $qb->andWhere($qb->expr()->notin('a', $subQuery->getDQL()));
             break;
     }
     $qb->setParameter($paramName, $this->getAttribute());
 }