【10.x】Individual wrapping in Collection::sortByMany allows sorting with multiple attributes by just an array of attributes(without direction, defaulting to asceding sort), but the spec is missing in docs
#10581
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Calling sortBy with a flat array allows sorting asc by multiple attributes.
The method works but not documented, causing confusion by explicit directions or workarounds like chaining sortBy in reverse order, i.e.
$collection->sortBy('second-priority')->sortBy('first-priority'), which does not happen in similirBuilder::orderBymethod.Caution
I haven't tested this on versions above 11 or below 9, so, not confident if it works for other versions
Example
Why it works?
In
Collection::sortByMany, When passing each comparisons,Arr::wrapis called, which wraps string to array$ascendinghttps://github.com/laravel/framework/blob/37455bbd9ece2ab48443b4ad2af85abf2140e326/src/Illuminate/Collections/Collection.php#L1458-L1460