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;
 }