From 6d83eea5407ab1a8b0679b3f81847900c33696e9 Mon Sep 17 00:00:00 2001 From: Tom H Anderson Date: Tue, 13 Jan 2026 17:56:13 -0700 Subject: [PATCH] If an Entity attribute for the group was not found, just continue --- src/Metadata/MetadataFactory.php | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/Metadata/MetadataFactory.php b/src/Metadata/MetadataFactory.php index d02cb3e..eec70a6 100644 --- a/src/Metadata/MetadataFactory.php +++ b/src/Metadata/MetadataFactory.php @@ -64,7 +64,11 @@ public function __invoke(): ArrayObject ->getMetadataFactory() ->getMetadataFor($reflectionClass->getName()); - $this->buildMetadataForEntity($reflectionClass); + // If an Entity attribute does not exist, skip this entity + if (! $this->buildMetadataForEntity($reflectionClass)) { + continue; + } + $this->buildMetadataForFields($entityClassMetadata, $reflectionClass); $this->buildMetadataForAssociations($reflectionClass); } @@ -82,9 +86,10 @@ public function __invoke(): ArrayObject * The buildmetadata* functions exist to simplify the buildMetadata * function. */ - private function buildMetadataForEntity(ReflectionClass $reflectionClass): void + private function buildMetadataForEntity(ReflectionClass $reflectionClass): bool { - $entityInstance = null; + $entityInstance = null; + $entityAttributeFound = false; // Fetch attributes for the entity class filterd by Attribute\Entity foreach ($reflectionClass->getAttributes(Attribute\Entity::class) as $attribute) { @@ -95,6 +100,8 @@ private function buildMetadataForEntity(ReflectionClass $reflectionClass): void continue; } + $entityAttributeFound = true; + // Only one matching instance per group is allowed assert( ! $entityInstance, @@ -116,6 +123,8 @@ private function buildMetadataForEntity(ReflectionClass $reflectionClass): void $this->getTypeName($reflectionClass->getName()), ]; } + + return $entityAttributeFound; } /**