Laravel 9.47 Released
The Laravel team released 9.47 this week with new Eloquent collection visibility methods, "destroyable" singleton routes, support for lazy collections with the batch fake, and more:
New Eloquent collection visibility methods
Jess Archer contributed setVisible
and setHidden
methods to Eloquent collections. The setVisible
method is useful when you want to be explicit about the data you want to return, and it won't leak as new attributes are added to the model:
$users->setVisible(['id', 'name'])->toArray();
/*
[
[
'id' => 1,
'name' => 'Test User',
]
]
*/
The converse setHidden
is useful if you only have a few fields that you want explicitly hidden but generally want values visible by default.
Support lazy collections in BatchFake
Evan Burrell contributed support for LazyCollection
when using the withFakeBatch()
with a Job. The following now works thanks to this feature:
use Batchable;
Model::cursor()
->map(fn (Model $model) => new ModelJob($model))
->chunk(1000)
->each(function (LazyCollection $jobs) {
$this->batch->add($jobs);
});
// Associated test
[$job] = (new ModelJobBatch())->withFakeBatch();
$job->handle();
Learn more about mocking batches in the Mocking documentation.
"Destroyable" singleton routes
Choraimy Kroonstuiver contributed an easy way to mark singleton routes as "destroyable." This type of route may be deleted, but it may not be created by default:
// Before
Route::singleton(...)->creatable()->except('create', 'store');
// After
Route::singleton(...)->destroyable();
Release Notes
You can see the complete list of new features and updates below and the diff between 9.46.0 and 9.47.0 on GitHub. The following release notes are directly from the changelog:
v9.47.0 - 2023-01-10
Added
- Added Support Lazy Collections in
BatchFake::add()
(#45507) - Added Decimal to list of Numeric rules (#45533)
- Added
Illuminate/Routing/PendingSingletonResourceRegistration::destroyable()
(#45549) - Added setVisible and setHidden to Eloquent Collection (#45558)
Fixed
- Fix bound method contextual binding (#45500)
- Fixed Method explodeExplicitRule with regex rule (#45555)
- Fixed
Illuminate/Database/Query/Builder::whereIntegerInRaw()
(#45584) - Fixes blade tags (#45490)