Happyr\DoctrineSpecification\EntitySpecificationRepositoryTrait::applySpecification PHP Method

applySpecification() protected method

protected applySpecification ( Doctrine\ORM\QueryBuilder $queryBuilder, Happyr\DoctrineSpecification\Filter\Filter | Happyr\DoctrineSpecification\Query\QueryModifier $specification = null, string $alias = null )
$queryBuilder Doctrine\ORM\QueryBuilder
$specification Happyr\DoctrineSpecification\Filter\Filter | Happyr\DoctrineSpecification\Query\QueryModifier
$alias string
    protected function applySpecification(QueryBuilder $queryBuilder, $specification = null, $alias = null)
    {
        if (null === $specification) {
            return;
        }
        if (!$specification instanceof QueryModifier && !$specification instanceof Filter) {
            throw new \InvalidArgumentException(sprintf('Expected argument of type "%s" or "%s", "%s" given.', 'Happyr\\DoctrineSpecification\\Query\\QueryModifier', 'Happyr\\DoctrineSpecification\\Filter\\Filter', is_object($specification) ? get_class($specification) : gettype($specification)));
        }
        if ($specification instanceof QueryModifier) {
            $specification->modify($queryBuilder, $alias ?: $this->getAlias());
        }
        if ($specification instanceof Filter && ($filter = (string) $specification->getFilter($queryBuilder, $alias ?: $this->getAlias()))) {
            $queryBuilder->andWhere($filter);
        }
    }