Michael Dyrynda has written up a post showing the Laravel users out there how to perform partial model updates making use of the "intersect" method.
Many Laravel developers would be familiar with the helpful only method found on the request object, which allows you to specify keys to pluck from the request. Not only does this simplify your workflow, it works quite nicely when completely unguarding your models by setting protected $guarded = [];[...] For newcomers to Laravel, you might find this suggestion dangerous, but using only means you will only pass the desired input to your model irrespective of what was passed via the request itself. [...] Adam Wathan tweeted about an approach he uncovered whilst helping somebody out when approaching partial model updates.
He shows how the method works by starting with a traditional update
method call that reassigns model properties based on input (using "has" checks to ensure the property exists). He then refactors it to use the intersect
method and replaces about twenty lines of code with one. He talks about the differences between using only
and intersect
and offers a caveat to using intersect
around preserving null values on properties.