Laravel 8.30 Released
Published on by Paul Redmond
The Laravel team released 8.30 with the ability to stop a validator on the first failure, a new collection method, a new rate-limiting convenience method for minutes, and the latest changes in the 8.x branch:
Stop on First Failure in Validators
Taylor Otwell contributed the ability to stop on the first validator failure instead of continuing to validate all fields:
$data = ['foo' => 'bar', 'age' => 30];$validator = Validator::make($data, [ 'foo' => 'required', 'age' => 'required|min:31', 'fizz' => 'required',]); $validator->stopOnFirstFailure();$validator->passes(); // false$validator->errors()->all();// returns ['age' => 'The age must be at least 31'].
New Contains One Item Collection Method
Joseph Silber contributed a new collection method for asserting if the collection contains one item. It's syntactic sugar for checking if the collection has one item:
// Manually checking the count$collection->count() === 1; collect(['apple'])->containsOneItem(); // truecollect([])->containsOneItem(); // falsecollect(['apple', 'orange'])->containsOneItem(); // false
Rate Limiting Per Minutes Helper
Craig Anderson contributed a new perMinutes()
function to rate limiting. Rate limiting already contains a perMinute()
method, but the new plural version is a convenience method to define to give more granular control:
use Illuminate\Cache\RateLimiting\Limit; $decayMinutes = 5;$maxAttempts = 100; Limit::perMinutes($decayMinutes, $maxAttempts);
You can see the full list of new features and updates below and the diff between 8.29.0 and 8.30.0 on GitHub. The following release notes are directly from the changelog:
v8.30.0
Added
- Added new line to
DetectsLostConnections
(#36373) - Added
Illuminate\Cache\RateLimiting\Limit::perMinutes()
(#36352, 86d0a5c) - Make Database Factory macroable (#36380)
- Added stop on first failure for Validators (39e1f84)
- Added
containsOneItem()
method to Collections (#36428, 5b7ffc2)