/** * {@inheritdoc} */ public function notLike($x, $y) { return $this->expr->notLike($x, $y); }
/** * @param string $x * @param mixed $y * * @return \Doctrine\ORM\Query\Expr\Comparison * @author Dominic Tubach <*****@*****.**> */ public function notLike($x, $y) { return parent::notLike($x, $y . " ESCAPE '\\'"); }
/** * Builds the orm expression. * * @param string $property * @param string $operator * @param string $parameter * @return Expr\Comparison|Expr\Func */ public static function buildExpression($property, $operator, $parameter = null) { self::isValid($operator, true); $expr = new Expr(); switch (intval($operator)) { case self::NOT_EQUAL: return $expr->neq($property, $parameter); case self::LOWER_THAN: return $expr->lt($property, $parameter); case self::LOWER_THAN_OR_EQUAL: return $expr->lte($property, $parameter); case self::GREATER_THAN: return $expr->gt($property, $parameter); case self::GREATER_THAN_OR_EQUAL: return $expr->gte($property, $parameter); case self::IN: return $expr->in($property, $parameter); case self::NOT_IN: return $expr->notIn($property, $parameter); case self::LIKE: return $expr->like($property, $parameter); case self::NOT_LIKE: return $expr->notLike($property, $parameter); case self::START_WITH: return $expr->like($property, $parameter); case self::NOT_START_WITH: return $expr->notLike($property, $parameter); case self::END_WITH: return $expr->like($property, $parameter); case self::NOT_END_WITH: return $expr->notLike($property, $parameter); case self::IS_NULL: return $expr->isNull($property); case self::IS_NOT_NULL: return $expr->isNotNull($property); default: return $expr->eq($property, $parameter); } }
public function testNotLikeExpr() { $this->assertEquals('a.description NOT LIKE :description', (string) $this->_expr->notLike('a.description', ':description')); }
/** * @param DatagridFilter $filter * @throws \InvalidArgumentException */ public function applyFilter(DatagridFilter $filter) { $qb = $this->getQueryBuilder(); $expr = new Expr(); $column = $filter->getColumn(); $colString = $column->getSelectPart1(); if ($column->getSelectPart2() != '') { $colString .= '.' . $column->getSelectPart2(); } if ($column instanceof Column\Select && $column->hasFilterSelectExpression()) { $colString = sprintf($column->getFilterSelectExpression(), $colString); } $values = $filter->getValues(); $wheres = []; foreach ($values as $key => $value) { $valueParameterName = ':' . str_replace('.', '', $column->getUniqueId() . $key); switch ($filter->getOperator()) { case DatagridFilter::LIKE: $wheres[] = $expr->like($colString, $valueParameterName); $qb->setParameter($valueParameterName, '%' . $value . '%'); break; case DatagridFilter::LIKE_LEFT: $wheres[] = $expr->like($colString, $valueParameterName); $qb->setParameter($valueParameterName, '%' . $value); break; case DatagridFilter::LIKE_RIGHT: $wheres[] = $expr->like($colString, $valueParameterName); $qb->setParameter($valueParameterName, $value . '%'); break; case DatagridFilter::NOT_LIKE: $wheres[] = $expr->notLike($colString, $valueParameterName); $qb->setParameter($valueParameterName, '%' . $value . '%'); break; case DatagridFilter::NOT_LIKE_LEFT: $wheres[] = $expr->notLike($colString, $valueParameterName); $qb->setParameter($valueParameterName, '%' . $value); break; case DatagridFilter::NOT_LIKE_RIGHT: $wheres[] = $expr->notLike($colString, $valueParameterName); $qb->setParameter($valueParameterName, $value . '%'); break; case DatagridFilter::EQUAL: $wheres[] = $expr->eq($colString, $valueParameterName); $qb->setParameter($valueParameterName, $value); break; case DatagridFilter::NOT_EQUAL: $wheres[] = $expr->neq($colString, $valueParameterName); $qb->setParameter($valueParameterName, $value); break; case DatagridFilter::GREATER_EQUAL: $wheres[] = $expr->gte($colString, $valueParameterName); $qb->setParameter($valueParameterName, $value); break; case DatagridFilter::GREATER: $wheres[] = $expr->gt($colString, $valueParameterName); $qb->setParameter($valueParameterName, $value); break; case DatagridFilter::LESS_EQUAL: $wheres[] = $expr->lte($colString, $valueParameterName); $qb->setParameter($valueParameterName, $value); break; case DatagridFilter::LESS: $wheres[] = $expr->lt($colString, $valueParameterName); $qb->setParameter($valueParameterName, $value); break; case DatagridFilter::BETWEEN: $minParameterName = ':' . str_replace('.', '', $colString . '0'); $maxParameterName = ':' . str_replace('.', '', $colString . '1'); $wheres[] = $expr->between($colString, $minParameterName, $maxParameterName); $qb->setParameter($minParameterName, $values[0]); $qb->setParameter($maxParameterName, $values[1]); break 2; default: throw new \InvalidArgumentException('This operator is currently not supported: ' . $filter->getOperator()); break; } } if (count($wheres) > 0) { $orWhere = $qb->expr()->orX(); $orWhere->addMultiple($wheres); $qb->andWhere($orWhere); } }