API Platform version(s) affected: 3.0.7
Description
Links require the same property type when following the example here: https://api-platform.com/docs/core/subresources/#company-employees
If the id type is a string on Company, it will fail if the id is type UUIDv4 for example on Employee. The issue is caused because the type is retrieved from the last identifier in the URL, and not for the particular identifier.
How to reproduce
See the link above.
Possible Solution
--- /dev/null
+++ ../src/Doctrine/Orm/State/LinksHandlerTrait.php
@@ -118,6 +118,9 @@
$queryBuilder->join("{$previousAlias}.{$link->getToProperty()}", $joinAlias);
foreach ($identifierProperties as $identifierProperty) {
+ $associationTargetClass = $doctrineClassMetadata->getAssociationMapping($link->getToProperty())['targetEntity'];
+ $doctrineClassMetadata = $manager->getClassMetadata($associationTargetClass);
+
$placeholder = $queryNameGenerator->generateParameterName($identifierProperty);
$queryBuilder->andWhere("$joinAlias.$identifierProperty = :$placeholder");
$queryBuilder->setParameter($placeholder, $this->getIdentifierValue($identifiers, $hasCompositeIdentifiers ? $identifierProperty : null), $doctrineClassMetadata->getTypeOfField($identifierProperty));
Additional Context
I didn't submit this as a PR as I'm not sure if there is more to the code that maybe we need to change, but this did solve our issue.
API Platform version(s) affected: 3.0.7
Description
Links require the same property type when following the example here: https://api-platform.com/docs/core/subresources/#company-employeesIf the
idtype is astringonCompany, it will fail if theidis typeUUIDv4for example onEmployee. The issue is caused because the type is retrieved from the last identifier in the URL, and not for the particular identifier.How to reproduce
See the link above.
Possible Solution
Additional Context
I didn't submit this as a PR as I'm not sure if there is more to the code that maybe we need to change, but this did solve our issue.