thephpleague / fractal

Output complex, flexible, AJAX/RESTful data structures.
fractal.thephpleague.com
MIT License
3.52k stars 352 forks source link

Sparse Fieldsets without calculations #524

Open hubertnnn opened 3 years ago

hubertnnn commented 3 years ago

I recently got myself into a situation, where I don't want to always calculate one of the attributes. In fact I only want it to be calculated when explicitly asked for (since the cost to do so)

Sparse fieldsets are a nice way to handle this, but there is no way to know inside the transformer if a field was requested or not.

On top of that JsonApi specification says that:

If a client does not specify the set of fields for a given resource type, 
the server MAY send all fields, a subset of fields, or no fields for that resource type.

Currently its not really possible to send anything but all fields.

Would be nice to have a way to:

  1. Know what fields were requested inside the transformer
  2. Have a way to make a field missing by default.

One way to do it might be to include the selected field list as second parameter of transform() function and let the transformer handle filtration.

Another way might be to have a similar system to includes with $defaultAttributes, $availableAttributes and includeXXX() that would be merged with results of transform() function.

matthewtrask commented 3 years ago

hmm I thought I had a work around, but I can see what you are talking about.

since we are working on a 1.0 now, this could definitely be worked on.

I think the best way, as I see it now, would be an added parameter to the transform method, but Im not totally sold on that one.

stale[bot] commented 2 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed after 4 weeks if no further activity occurs. Thank you for your contributions.