@@ -109,11 +109,16 @@ public function sparseFields(Resource $resource): array
109109 }
110110
111111 $ fields = $ this ->fields ($ resource );
112+ $ type = $ resource ->type ();
113+ $ fieldsParam = $ this ->queryParam ('fields ' );
112114
113- if ($ requested = $ this ->queryParam ('fields ' )[$ resource ->type ()] ?? null ) {
115+ if (is_array ($ fieldsParam ) && array_key_exists ($ type , $ fieldsParam )) {
116+ $ requested = $ fieldsParam [$ type ];
114117 $ requested = is_array ($ requested ) ? $ requested : explode (', ' , $ requested );
115118
116119 $ fields = array_intersect_key ($ fields , array_flip ($ requested ));
120+ } else {
121+ $ fields = array_filter ($ fields , fn (Field $ field ) => !$ field ->sparse );
117122 }
118123
119124 return $ this ->sparseFields [$ resource ] = $ fields ;
@@ -122,13 +127,15 @@ public function sparseFields(Resource $resource): array
122127 /**
123128 * Determine whether a field has been requested in a sparse fieldset.
124129 */
125- public function fieldRequested (string $ type , string $ field, bool $ default = true ): bool
130+ public function fieldRequested (string $ type , string $ field ): bool
126131 {
127- if ($ requested = $ this ->queryParam ('fields ' )[$ type ] ?? null ) {
128- return in_array ($ field , explode (', ' , $ requested ));
132+ $ fieldsParam = $ this ->queryParam ('fields ' );
133+
134+ if (is_array ($ fieldsParam ) && array_key_exists ($ type , $ fieldsParam )) {
135+ return in_array ($ field , explode (', ' , $ fieldsParam [$ type ]));
129136 }
130137
131- return $ default ;
138+ return !( $ this -> fields ( $ this -> resource ( $ type ))[ $ field ]?->sparse ?? null ) ;
132139 }
133140
134141 /**
0 commit comments