@@ -109,11 +109,16 @@ public function sparseFields(Resource $resource): array
109
109
}
110
110
111
111
$ fields = $ this ->fields ($ resource );
112
+ $ type = $ resource ->type ();
113
+ $ fieldsParam = $ this ->queryParam ('fields ' );
112
114
113
- if ($ requested = $ this ->queryParam ('fields ' )[$ resource ->type ()] ?? null ) {
115
+ if (is_array ($ fieldsParam ) && array_key_exists ($ type , $ fieldsParam )) {
116
+ $ requested = $ fieldsParam [$ type ];
114
117
$ requested = is_array ($ requested ) ? $ requested : explode (', ' , $ requested );
115
118
116
119
$ fields = array_intersect_key ($ fields , array_flip ($ requested ));
120
+ } else {
121
+ $ fields = array_filter ($ fields , fn (Field $ field ) => !$ field ->sparse );
117
122
}
118
123
119
124
return $ this ->sparseFields [$ resource ] = $ fields ;
@@ -122,13 +127,15 @@ public function sparseFields(Resource $resource): array
122
127
/**
123
128
* Determine whether a field has been requested in a sparse fieldset.
124
129
*/
125
- public function fieldRequested (string $ type , string $ field, bool $ default = true ): bool
130
+ public function fieldRequested (string $ type , string $ field ): bool
126
131
{
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 ]));
129
136
}
130
137
131
- return $ default ;
138
+ return !( $ this -> fields ( $ this -> resource ( $ type ))[ $ field ]?->sparse ?? null ) ;
132
139
}
133
140
134
141
/**
0 commit comments