public function testAsArrayMethod() { $f = new Filter('some', 20); $arr = $f->asArray(); $this->assertEquals('some', $arr['property']); $this->assertEquals(20, $arr['value']); $this->assertEquals(Filter::OP_EQ, $arr['operator']); $this->assertEquals($f->getProperty(), $arr['property']); $this->assertEquals($f->getValue(), $arr['value']); $this->assertEquals($f->getOperator(), $arr['operator']); }
/** * Создает "выражение" для фильтра, используя переданные данные * * @param Filter $filter фильтр * @param QueryBuilder $qb постройщик запроса, используя который будет создано выражение * * @return \Doctrine\ORM\Query\Expr\Comparison|null */ private static function makeExprForFilter(Filter $filter, QueryBuilder $qb) { $alias = $qb->getRootAliases()[0]; $field = "{$alias}.{$filter->getProperty()}"; if ($filter->getValue() === null) { $value = null; } else { $value = "'{$filter->getValue()}'"; } $result = null; switch ($filter->getOperator()) { case Filter::OP_EQ: if ($filter->getValue() === null) { $result = $qb->expr()->isNull($field); } else { $result = $qb->expr()->eq($field, $value); } break; case Filter::OP_NEQ: if ($filter->getValue() === null) { $result = $qb->expr()->isNotNull($field); } else { $result = $qb->expr()->neq($field, $value); } break; } return $result; }