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(); // true
collect([])->containsOneItem(); // false
collect(['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)
Changed
Filed in:
Full stack web developer. Author of Lumen Programming Guide and Docker for PHP Developers.