Exemplo n.º 1
0
 /**
  * @param QueryBuilder $queryBuilder
  * @param Criteria     $criteria
  * @param string       $alias
  */
 protected function applyCriteria(QueryBuilder $queryBuilder, Criteria $criteria, string $alias)
 {
     $properties = array_merge($this->getClassMetadata()->getFieldNames(), $this->getClassMetadata()->getAssociationNames());
     foreach ($criteria->all() as $property => $value) {
         if (!in_array($property, $properties)) {
             continue;
         }
         $name = $this->getPropertyName($property, $alias);
         if (null === $value) {
             $queryBuilder->andWhere($queryBuilder->expr()->isNull($name));
         } elseif (is_array($value)) {
             $queryBuilder->andWhere($queryBuilder->expr()->in($name, $value));
         } elseif ('' !== $value) {
             $parameter = str_replace('.', '_', $property);
             $queryBuilder->andWhere($queryBuilder->expr()->eq($name, ':' . $parameter))->setParameter($parameter, $value);
         }
     }
 }