コード例 #1
0
 /**
  * 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());
 }
コード例 #2
0
 /**
  * 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());
 }