ApiPlatform\Core\Bridge\Doctrine\Orm\Extension\EagerLoadingExtension::addSelect PHP Method

addSelect() private method

private addSelect ( Doctrine\ORM\QueryBuilder $queryBuilder, string $entity, string $associationAlias, array $propertyMetadataOptions )
$queryBuilder Doctrine\ORM\QueryBuilder
$entity string
$associationAlias string
$propertyMetadataOptions array
    private function addSelect(QueryBuilder $queryBuilder, string $entity, string $associationAlias, array $propertyMetadataOptions)
    {
        $select = [];
        $entityManager = $queryBuilder->getEntityManager();
        $targetClassMetadata = $entityManager->getClassMetadata($entity);
        foreach ($this->propertyNameCollectionFactory->create($entity) as $property) {
            $propertyMetadata = $this->propertyMetadataFactory->create($entity, $property, $propertyMetadataOptions);
            if (true === $propertyMetadata->isIdentifier()) {
                $select[] = $property;
                continue;
            }
            //the field test allows to add methods to a Resource which do not reflect real database fields
            if (true === $targetClassMetadata->hasField($property) && true === $propertyMetadata->isReadable()) {
                $select[] = $property;
            }
        }
        $queryBuilder->addSelect(sprintf('partial %s.{%s}', $associationAlias, implode(',', $select)));
    }