@@ -551,7 +551,7 @@ protected function obj2Array(object $obj): array {
551551 * @throws NotFoundExceptionInterface
552552 * @throws ContainerExceptionInterface
553553 */
554- protected function obj2Resource (object $ obj , array $ expandResult = [], array $ sparseFieldsets = null ): array {
554+ protected function obj2Resource (object $ obj , array $ expandResult = [], array $ sparseFieldsets = null , array $ aggregateFieldsets = null ): array {
555555 // Convert values to JSON supported types
556556 $ features = $ obj ->getFeatures ();
557557 $ kv = $ obj ->getKeyValueDict ();
@@ -571,12 +571,8 @@ protected function obj2Resource(object $obj, array $expandResult = [], array $sp
571571 }
572572
573573 // If sparse fieldsets (https://jsonapi.org/format/#fetching-sparse-fieldsets) is used, return only the requested data
574- if (is_array ($ sparseFieldsets )) {
575- if (array_key_exists ($ this ->getObjectTypeName ($ obj ), $ sparseFieldsets )) {
576- if (!in_array ($ feature ['alias ' ], $ sparseFieldsets [$ this ->getObjectTypeName ($ obj )])) {
577- continue ;
578- }
579- }
574+ if (is_array ($ sparseFieldsets ) && array_key_exists ($ this ->getObjectTypeName ($ obj ), $ sparseFieldsets ) && !in_array ($ feature ['alias ' ], $ sparseFieldsets [$ this ->getObjectTypeName ($ obj )])) {
575+ continue ;
580576 }
581577
582578 // Hide the primaryKey from the attributes since this is used as indentifier (id) in response
@@ -590,8 +586,8 @@ protected function obj2Resource(object $obj, array $expandResult = [], array $sp
590586
591587 $ attributes [$ feature ['alias ' ]] = $ apiClass ::db2json ($ feature , $ kv [$ name ]);
592588 }
593-
594- $ aggregatedData = $ apiClass ::aggregateData ($ obj , $ sparseFieldsets );
589+
590+ $ aggregatedData = $ apiClass ::aggregateData ($ obj , $ aggregateFieldsets );
595591 $ attributes = array_merge ($ attributes , $ aggregatedData );
596592
597593 /* Build JSON::API relationship resource */
@@ -1429,23 +1425,23 @@ protected static function getOneResource(object $apiClass, object $object, Reque
14291425 // Convert objects to data resources
14301426 foreach ($ objects as $ object ) {
14311427 // Create object
1432- $ newObject = $ apiClass ->obj2Resource ($ object , $ expandResult , $ request ->getQueryParams ()['fields ' ] ?? null );
1428+ $ newObject = $ apiClass ->obj2Resource ($ object , $ expandResult , $ request ->getQueryParams ()['fields ' ] ?? null , $ request -> getQueryParams ()[ ' aggregate ' ] ?? null );
14331429
14341430 // For compound document, included resources
14351431 foreach ($ expands as $ expand ) {
14361432 if (array_key_exists ($ object ->getId (), $ expandResult [$ expand ])) {
14371433 $ expandResultObject = $ expandResult [$ expand ][$ object ->getId ()];
14381434 if (is_array ($ expandResultObject )) {
14391435 foreach ($ expandResultObject as $ expandObject ) {
1440- $ includedResources [] = $ apiClass ->obj2Resource ($ expandObject , [], $ request ->getQueryParams ()['fields ' ] ?? null );
1436+ $ includedResources [] = $ apiClass ->obj2Resource ($ expandObject , [], $ request ->getQueryParams ()['fields ' ] ?? null , $ request -> getQueryParams ()[ ' aggregate ' ] ?? null );
14411437 }
14421438 }
14431439 else {
14441440 if ($ expandResultObject === null ) {
14451441 // to-only relation which is nullable
14461442 continue ;
14471443 }
1448- $ includedResources [] = $ apiClass ->obj2Resource ($ expandResultObject , [], $ request ->getQueryParams ()['fields ' ] ?? null );
1444+ $ includedResources [] = $ apiClass ->obj2Resource ($ expandResultObject , [], $ request ->getQueryParams ()['fields ' ] ?? null , $ request -> getQueryParams ()[ ' aggregate ' ] ?? null );
14491445 }
14501446 }
14511447 }
0 commit comments