ApiPlatform\Core\Bridge\Doctrine\Orm\CollectionDataProvider::getCollection PHP Метод

getCollection() публичный метод

public getCollection ( string $resourceClass, string $operationName = null )
$resourceClass string
$operationName string
    public function getCollection(string $resourceClass, string $operationName = null)
    {
        $manager = $this->managerRegistry->getManagerForClass($resourceClass);
        if (null === $manager) {
            throw new ResourceClassNotSupportedException();
        }
        $repository = $manager->getRepository($resourceClass);
        if (!method_exists($repository, 'createQueryBuilder')) {
            throw new RuntimeException('The repository class must have a "createQueryBuilder" method.');
        }
        $queryBuilder = $repository->createQueryBuilder('o');
        $queryNameGenerator = new QueryNameGenerator();
        foreach ($this->collectionExtensions as $extension) {
            $extension->applyToCollection($queryBuilder, $queryNameGenerator, $resourceClass, $operationName);
            if ($extension instanceof QueryResultCollectionExtensionInterface && $extension->supportsResult($resourceClass, $operationName)) {
                return $extension->getResult($queryBuilder);
            }
        }
        return $queryBuilder->getQuery()->getResult();
    }

Usage Example

 /**
  * @expectedException \ApiPlatform\Core\Exception\ResourceClassNotSupportedException
  */
 public function testThrowResourceClassNotSupportedException()
 {
     $managerRegistryProphecy = $this->prophesize(ManagerRegistry::class);
     $managerRegistryProphecy->getManagerForClass(Dummy::class)->willReturn(null)->shouldBeCalled();
     $extensionProphecy = $this->prophesize(QueryResultCollectionExtensionInterface::class);
     $dataProvider = new CollectionDataProvider($managerRegistryProphecy->reveal(), [$extensionProphecy->reveal()]);
     $dataProvider->getCollection(Dummy::class, 'foo');
 }
CollectionDataProvider