2020use ApiPlatform \Core \DataProvider \ItemDataProviderInterface ;
2121use ApiPlatform \Core \DataProvider \RestrictedDataProviderInterface ;
2222use ApiPlatform \Core \Exception \RuntimeException ;
23+ use ApiPlatform \Core \Identifier \Normalizer \ChainIdentifierNormalizer ;
2324use ApiPlatform \Core \Metadata \Property \Factory \PropertyMetadataFactoryInterface ;
2425use ApiPlatform \Core \Metadata \Property \Factory \PropertyNameCollectionFactoryInterface ;
2526use Doctrine \Common \Persistence \ManagerRegistry ;
@@ -71,11 +72,13 @@ public function getItem(string $resourceClass, $id, string $operationName = null
7172 {
7273 $ manager = $ this ->managerRegistry ->getManagerForClass ($ resourceClass );
7374
74- $ identifiers = $ this ->normalizeIdentifiers ($ id , $ manager , $ resourceClass );
75+ if (!($ context [ChainIdentifierNormalizer::HAS_IDENTIFIER_NORMALIZER ] ?? false )) {
76+ $ id = $ this ->normalizeIdentifiers ($ id , $ manager , $ resourceClass );
77+ }
7578
7679 $ fetchData = $ context ['fetch_data ' ] ?? true ;
7780 if (!$ fetchData && $ manager instanceof EntityManagerInterface) {
78- return $ manager ->getReference ($ resourceClass , $ identifiers );
81+ return $ manager ->getReference ($ resourceClass , $ id );
7982 }
8083
8184 $ repository = $ manager ->getRepository ($ resourceClass );
@@ -87,10 +90,10 @@ public function getItem(string $resourceClass, $id, string $operationName = null
8790 $ queryNameGenerator = new QueryNameGenerator ();
8891 $ doctrineClassMetadata = $ manager ->getClassMetadata ($ resourceClass );
8992
90- $ this ->addWhereForIdentifiers ($ identifiers , $ queryBuilder , $ doctrineClassMetadata );
93+ $ this ->addWhereForIdentifiers ($ id , $ queryBuilder , $ doctrineClassMetadata );
9194
9295 foreach ($ this ->itemExtensions as $ extension ) {
93- $ extension ->applyToItem ($ queryBuilder , $ queryNameGenerator , $ resourceClass , $ identifiers , $ operationName , $ context );
96+ $ extension ->applyToItem ($ queryBuilder , $ queryNameGenerator , $ resourceClass , $ id , $ operationName , $ context );
9497
9598 if ($ extension instanceof QueryResultItemExtensionInterface && $ extension ->supportsResult ($ resourceClass , $ operationName , $ context )) {
9699 return $ extension ->getResult ($ queryBuilder , $ resourceClass , $ operationName , $ context );
0 commit comments