Laravel 8.30 Released

News

March 4th, 2021

laravel8.jpg

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:

1$data = ['foo' => 'bar', 'age' => 30];
2$validator = Validator::make($data, [
3 'foo' => 'required',
4 'age' => 'required|min:31',
5 'fizz' => 'required',
6]);
7
8$validator->stopOnFirstFailure();
9$validator->passes(); // false
10$validator->errors()->all();
11// 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:

1// Manually checking the count
2$collection->count() === 1;
3
4collect(['apple'])->containsOneItem(); // true
5collect([])->containsOneItem(); // false
6collect(['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:

1use Illuminate\Cache\RateLimiting\Limit;
2
3$decayMinutes = 5;
4$maxAttempts = 100;
5
6Limit::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

  • Respect custom route key with explicit route model binding (#36375)
  • Add Buffered Console Output (#36404)
  • Don't flash 'current_password' input (#36415)
  • Check for context method in Exception Handler (#36424)

Filed in:

Paul Redmond

Full stack web developer. Author of Lumen Programming Guide and Docker for PHP Developers.