News

Laravel 8.11 Released

Published
Laravel 8.11 Released image

Release updates

Never miss a Laravel release

Get an email whenever a new Laravel release lands.

The Laravel team released 8.11 this week with two new job middleware, preserving eloquent collection type when calling fresh, and the latest new features, fixes, and changes in the 8.x branch.

Job Middleware for Preventing Overlapping Jobs

Paras Malhotra contributed a new job middleware for preventing overlapping jobs. An example use-case could be stopping a double refund for an order:

use Illuminate\Queue\Middleware\WithoutOverlapping;
 
public function middleware()
{
return [
new WithoutOverlapping($this->order->id)
];
}

Rate Limit Jobs

Paras Malhotra also contributed a RateLimitsJobs and RateLimitsJobsWithRedis middleware to the queuing system. It uses the same rate limiter class introduced in Laravel 8:

use Illuminate\Support\Facades\RateLimiter;
 
RateLimiter::for('backups', function ($job) {
return $job->user->vipCustomer()
? Limit::none()
: Limit::perHour(1)->by($job->user->id);
});

Next, you can reference the backups rate limiter in the job middleware definition:

use Illuminate\Queue\Middleware\RateLimitsJobs;
 
public function middleware()
{
return [new RateLimitsJobs('backups')];
}

The queue middleware documentation includes the middleware introduced in this release.

Preserve Eloquent Collection Type after Calling fresh()

Caleb Porzio contributed an update to preserve eloquent collection type after calling ->fresh(). The pull request has the following example to illustrate the change:

// Current behavior
$users = User::all();
$users->fresh(); // Returns instance of "Illuminate\Database\Eloquent\Collection"
 
$users = User::all()
$users->first()->delete();
$users->fresh(); // Returns instance of "Illuminate\Support\Collection"
 
 
// New behavior
$users = User::all();
$users->fresh(); // Returns instance of "Illuminate\Database\Eloquent\Collection"
 
$users = User::all()
$users->first()->delete();
$users->fresh(); // // Returns instance of "Illuminate\Database\Eloquent\Collection" as well

Release Notes

You can see the full list of new features and updates below and the diff between 8.10.0 and 8.11.0 on GitHub. The following release notes are directly from the changelog:

v8.11.0

Added

  • Added job middleware to prevent overlapping jobs (#34794, eed05b4)
  • Bring Rate Limiters to Jobs (#34829, ae00294)
  • Added multiple_of custom replacer in validator (#34858)
  • Preserve eloquent collection type after calling ->fresh() (#34848)
  • Provisional support for PHP 8.0 for 6.x (Changed some code in 8.x) (#34884, 28bb76e)

Fixed

  • Fixed fresh() and refresh() on pivots and morph pivots (#34836)
  • Fixed config batching typo (#34852)
  • Fixed Illuminate\Queue\Console\RetryBatchCommand for un-found batch id (#34878)

Changed

  • Change loadRoutesFrom() to accept group $attributes (#34866)

v8.11.1

Fixed

Paul Redmond photo

Staff writer at Laravel News. Full stack web developer and author.

Sponsored

acquaintsoft logo
Acquaint Softtech

Hire Laravel developers with AI expertise at $20/hr. Get started in 48 hours.

Visit Acquaint Softtech

The latest

View all →
Official Laravel Zed Extension: LSP for PHP & Blade image

Official Laravel Zed Extension: LSP for PHP & Blade

Read article
Laravel Head: Manage Meta Tags, Open Graph, and JSON-LD image

Laravel Head: Manage Meta Tags, Open Graph, and JSON-LD

Read article
PhpStorm 2026.2 Released image

PhpStorm 2026.2 Released

Read article
Laravel Doctor: Diagnose Your App With One Artisan Command image

Laravel Doctor: Diagnose Your App With One Artisan Command

Read article
CPX: The Composer Package Executor for PHP image

CPX: The Composer Package Executor for PHP

Read article
Laravel AI SDK Adds Human-in-the-Loop Tool Approval image

Laravel AI SDK Adds Human-in-the-Loop Tool Approval

Read article