Creates 'deflated' serialised arrays by using a dictionary of models that may be referenced more than once
You can install the package via composer:
composer require zem/laravel-shrinkwrap
Laravel 5.5+ will automatically register the service provider(s).
Add the \ZEM\Shrinkwrap\Addressable
trait to models you would like to have
"deduplicated" in the serialisation process.
\ZEM\Shrinkwrap\Facility::shrink(collect([
'item1' => $myModel,
'item2' => $myModel,
]));
// Or using the built-in macro:
collect([
'item1' => $myModel,
'item2' => $myModel,
])->shrink();
If you have instances of addressable models at "deep" paths within your data,
make sure each iterable item is a collection
all the way down to the model
as toArray
will be called on each item.
composer test