8888use ApiPlatform \Laravel \Eloquent \PropertyAccess \PropertyAccessor as EloquentPropertyAccessor ;
8989use ApiPlatform \Laravel \Eloquent \PropertyInfo \EloquentExtractor ;
9090use ApiPlatform \Laravel \Eloquent \Serializer \EloquentNameConverter ;
91+ use ApiPlatform \Laravel \Eloquent \Serializer \Mapping \Loader \RelationMetadataLoader ;
9192use ApiPlatform \Laravel \Eloquent \Serializer \SerializerContextBuilder as EloquentSerializerContextBuilder ;
9293use ApiPlatform \Laravel \GraphQl \Controller \EntrypointController as GraphQlEntrypointController ;
9394use ApiPlatform \Laravel \GraphQl \Controller \GraphiQlController ;
@@ -218,12 +219,21 @@ public function register(): void
218219 $ this ->app ->bind (LoaderInterface::class, AttributeLoader::class);
219220 $ this ->app ->bind (ClassMetadataFactoryInterface::class, ClassMetadataFactory::class);
220221 $ this ->app ->singleton (ClassMetadataFactory::class, function (Application $ app ) {
222+ /** @var ConfigRepository */
223+ $ config = $ app ['config ' ];
224+ $ nameConverter = $ config ->get ('api-platform.name_converter ' , SnakeCaseToCamelCaseNameConverter::class);
225+ if ($ nameConverter && class_exists ($ nameConverter )) {
226+ $ nameConverter = new EloquentNameConverter ($ app ->make ($ nameConverter ));
227+ }
228+
221229 return new ClassMetadataFactory (
222230 new LoaderChain ([
223231 new PropertyMetadataLoader (
224232 $ app ->make (PropertyNameCollectionFactoryInterface::class),
233+ $ nameConverter
225234 ),
226235 new AttributeLoader (),
236+ // new RelationMetadataLoader($app->make(ModelMetadata::class)),
227237 ])
228238 );
229239 });
@@ -261,6 +271,10 @@ public function register(): void
261271 $ this ->app ->singleton (PropertyMetadataFactoryInterface::class, function (Application $ app ) {
262272 /** @var ConfigRepository $config */
263273 $ config = $ app ['config ' ];
274+ $ nameConverter = $ config ->get ('api-platform.name_converter ' , SnakeCaseToCamelCaseNameConverter::class);
275+ if ($ nameConverter && class_exists ($ nameConverter )) {
276+ $ nameConverter = new EloquentNameConverter ($ app ->make ($ nameConverter ));
277+ }
264278
265279 return new CachePropertyMetadataFactory (
266280 new SchemaPropertyMetadataFactory (
@@ -274,7 +288,8 @@ public function register(): void
274288 new EloquentPropertyMetadataFactory (
275289 $ app ->make (ModelMetadata::class),
276290 ),
277- )
291+ ),
292+ $ nameConverter
278293 ),
279294 $ app ->make (ResourceClassResolverInterface::class)
280295 ),
@@ -287,6 +302,10 @@ public function register(): void
287302 $ this ->app ->singleton (PropertyNameCollectionFactoryInterface::class, function (Application $ app ) {
288303 /** @var ConfigRepository $config */
289304 $ config = $ app ['config ' ];
305+ $ nameConverter = $ config ->get ('api-platform.name_converter ' , SnakeCaseToCamelCaseNameConverter::class);
306+ if ($ nameConverter && class_exists ($ nameConverter )) {
307+ $ nameConverter = new EloquentNameConverter ($ app ->make ($ nameConverter ));
308+ }
290309
291310 return new CachePropertyNameCollectionMetadataFactory (
292311 new ClassLevelAttributePropertyNameCollectionFactory (
@@ -296,7 +315,8 @@ public function register(): void
296315 new PropertyInfoPropertyNameCollectionFactory ($ app ->make (PropertyInfoExtractorInterface::class)),
297316 $ app ->make (ResourceClassResolverInterface::class)
298317 )
299- )
318+ ),
319+ $ nameConverter
300320 ),
301321 true === $ config ->get ('app.debug ' ) ? 'array ' : $ config ->get ('api-platform.cache ' , 'file ' )
302322 );
0 commit comments