diff --git a/src/Bridge/Doctrine/Orm/Extension/EagerLoadingExtension.php b/src/Bridge/Doctrine/Orm/Extension/EagerLoadingExtension.php index 75dfc4a8b57..5fa67f73d0b 100644 --- a/src/Bridge/Doctrine/Orm/Extension/EagerLoadingExtension.php +++ b/src/Bridge/Doctrine/Orm/Extension/EagerLoadingExtension.php @@ -74,9 +74,9 @@ private function joinRelations(QueryBuilder $queryBuilder, string $resourceClass $entityManager = $queryBuilder->getEntityManager(); $classMetadata = $entityManager->getClassMetadata($resourceClass); $j = 0; + $i = 0; - foreach ($classMetadata->getAssociationNames() as $i => $association) { - $mapping = $classMetadata->associationMappings[$association]; + foreach ($classMetadata->associationMappings as $association => $mapping) { $propertyMetadata = $this->propertyMetadataFactory->create($resourceClass, $association, $propertyMetadataOptions); if (ClassMetadataInfo::FETCH_EAGER !== $mapping['fetch'] || false === $propertyMetadata->isReadableLink()) { @@ -95,7 +95,7 @@ private function joinRelations(QueryBuilder $queryBuilder, string $resourceClass $method = 'leftJoin'; } - $associationAlias = $relationAlias.$i; + $associationAlias = $relationAlias.$i++; $queryBuilder->{$method}($originAlias.'.'.$association, $associationAlias); $select = []; $targetClassMetadata = $entityManager->getClassMetadata($mapping['targetEntity']); diff --git a/tests/Bridge/Doctrine/Orm/Extension/EagerLoadingExtensionTest.php b/tests/Bridge/Doctrine/Orm/Extension/EagerLoadingExtensionTest.php index e3cdaf2c83d..4db34e85954 100644 --- a/tests/Bridge/Doctrine/Orm/Extension/EagerLoadingExtensionTest.php +++ b/tests/Bridge/Doctrine/Orm/Extension/EagerLoadingExtensionTest.php @@ -61,7 +61,6 @@ public function testApplyToCollection() $queryBuilderProphecy = $this->prophesize(QueryBuilder::class); $classMetadataProphecy = $this->prophesize(ClassMetadata::class); - $classMetadataProphecy->getAssociationNames()->shouldBeCalled()->willReturn([0 => 'relatedDummy', 'relatedDummy2']); $classMetadataProphecy->associationMappings = [ 'relatedDummy' => ['fetch' => 3, 'joinColumns' => [['nullable' => true]], 'targetEntity' => RelatedDummy::class], 'relatedDummy2' => ['fetch' => 3, 'joinColumns' => [['nullable' => false]], 'targetEntity' => RelatedDummy::class], @@ -75,7 +74,7 @@ public function testApplyToCollection() } } - $relatedClassMetadataProphecy->getAssociationNames()->shouldBeCalled()->willReturn([]); + $relatedClassMetadataProphecy->associationMappings = []; $emProphecy = $this->prophesize(EntityManager::class); $emProphecy->getClassMetadata(Dummy::class)->shouldBeCalled()->willReturn($classMetadataProphecy->reveal()); @@ -110,6 +109,7 @@ public function testApplyToItem() $propertyMetadataFactoryProphecy->create(Dummy::class, 'relatedDummy2', [])->willReturn($relationPropertyMetadata)->shouldBeCalled(); $propertyMetadataFactoryProphecy->create(Dummy::class, 'relatedDummy3', [])->willReturn($relationPropertyMetadata)->shouldBeCalled(); $propertyMetadataFactoryProphecy->create(Dummy::class, 'relatedDummy4', [])->willReturn($relationPropertyMetadata)->shouldBeCalled(); + $propertyMetadataFactoryProphecy->create(Dummy::class, 'relatedDummy5', [])->willReturn($relationPropertyMetadata)->shouldBeCalled(); $idPropertyMetadata = new PropertyMetadata(); $idPropertyMetadata = $idPropertyMetadata->withIdentifier(true); @@ -130,7 +130,6 @@ public function testApplyToItem() $queryBuilderProphecy = $this->prophesize(QueryBuilder::class); $classMetadataProphecy = $this->prophesize(ClassMetadata::class); - $classMetadataProphecy->getAssociationNames()->shouldBeCalled()->willReturn(['relatedDummy', 'relatedDummy2', 'relatedDummy3', 'relatedDummy4']); $classMetadataProphecy->associationMappings = [ 'relatedDummy' => ['fetch' => 3, 'joinColumns' => [['nullable' => true]], 'targetEntity' => RelatedDummy::class], 'relatedDummy2' => ['fetch' => 3, 'joinColumns' => [['nullable' => false]], 'targetEntity' => UnknownDummy::class], @@ -147,14 +146,12 @@ public function testApplyToItem() } } - $relatedClassMetadataProphecy->getAssociationNames()->shouldBeCalled()->willReturn(['relation']); - $relatedClassMetadataProphecy->associationMappings = [ 'relation' => ['fetch' => 3, 'joinColumns' => [['nullable' => false]], 'targetEntity' => UnknownDummy::class], ]; $unknownClassMetadataProphecy = $this->prophesize(ClassMetadata::class); - $unknownClassMetadataProphecy->getAssociationNames()->shouldBeCalled()->willReturn([]); + $unknownClassMetadataProphecy->associationMappings = []; $emProphecy = $this->prophesize(EntityManager::class); $emProphecy->getClassMetadata(Dummy::class)->shouldBeCalled()->willReturn($classMetadataProphecy->reveal()); @@ -188,7 +185,6 @@ public function testCreateItemWithOperationName() $propertyMetadataFactoryProphecy->create(Dummy::class, 'foo', ['item_operation_name' => 'item_operation'])->shouldBeCalled()->willReturn(new PropertyMetadata()); $classMetadataProphecy = $this->prophesize(ClassMetadata::class); - $classMetadataProphecy->getAssociationNames()->shouldBeCalled()->willReturn(['foo']); $classMetadataProphecy->associationMappings = [ 'foo' => ['fetch' => 1], ]; @@ -209,7 +205,6 @@ public function testCreateCollectionWithOperationName() $propertyMetadataFactoryProphecy->create(Dummy::class, 'foo', ['collection_operation_name' => 'collection_operation'])->shouldBeCalled()->willReturn(new PropertyMetadata()); $classMetadataProphecy = $this->prophesize(ClassMetadata::class); - $classMetadataProphecy->getAssociationNames()->shouldBeCalled()->willReturn(['foo']); $classMetadataProphecy->associationMappings = [ 'foo' => ['fetch' => 1], ];