ApiPlatform\Core\Bridge\Doctrine\Orm\Extension\OrderExtension::applyToCollection PHP Method

applyToCollection() public method

public applyToCollection ( Doctrine\ORM\QueryBuilder $queryBuilder, ApiPlatform\Core\Bridge\Doctrine\Orm\Util\QueryNameGeneratorInterface $queryNameGenerator, string $resourceClass, string $operationName = null )
$queryBuilder Doctrine\ORM\QueryBuilder
$queryNameGenerator ApiPlatform\Core\Bridge\Doctrine\Orm\Util\QueryNameGeneratorInterface
$resourceClass string
$operationName string
    public function applyToCollection(QueryBuilder $queryBuilder, QueryNameGeneratorInterface $queryNameGenerator, string $resourceClass, string $operationName = null)
    {
        $classMetaData = $queryBuilder->getEntityManager()->getClassMetadata($resourceClass);
        $identifiers = $classMetaData->getIdentifier();
        if (null !== $this->order) {
            foreach ($identifiers as $identifier) {
                $queryBuilder->addOrderBy('o.' . $identifier, $this->order);
            }
        }
    }

Usage Example

 public function testApplyToCollectionWithWrongOrder()
 {
     $queryBuilderProphecy = $this->prophesize(QueryBuilder::class);
     $queryBuilderProphecy->addOrderBy('o.name', 'asc')->shouldNotBeCalled();
     $classMetadataProphecy = $this->prophesize(ClassMetadata::class);
     $classMetadataProphecy->getIdentifier()->shouldBeCalled()->willReturn(['name']);
     $emProphecy = $this->prophesize(EntityManager::class);
     $emProphecy->getClassMetadata(Dummy::class)->shouldBeCalled()->willReturn($classMetadataProphecy->reveal());
     $queryBuilderProphecy->getEntityManager()->shouldBeCalled()->willReturn($emProphecy->reveal());
     $queryBuilder = $queryBuilderProphecy->reveal();
     $orderExtensionTest = new OrderExtension();
     $orderExtensionTest->applyToCollection($queryBuilder, new QueryNameGenerator(), Dummy::class);
 }