/** * 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()); }
/** * 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()); }