Never Miss a Laravel Release 🚀
The Laravel team released version 12.37.0, with new background queue driver, a Factory insert method, a ucwords() string method, and more.
Process Queue Jobs in the Background
Barry vd. Heuvel contributed a queue driver that defers jobs to the background using Concurrently::defer(). The job is serialized and run from a PHP process:
Similar to the deferred queue driver, this defers the jobs to the background, but uses
Concurrently::defer()instead of the regular defer. This means the job will be serialized and ran from a PHP process, which might be more suitable for 'heavier'/longer requests.Use cases would be similar to Concurrently::defer() but simplified as a Job.
RecordDelivery::dispatch($order)->onConnection('background');
See the Deferred Dispatching documentation for more details.
Pass a Custom Depth to Filesystem files() and directories() Methods
Andrew Brown contributed the ability to pass an optional depth parameter to filesystem methods. This update is backward compatible because the default is 0, which was previously the hard-coded depth.
use Illuminate\Support\Facades\Storage; $files = Storage::files($directory, depth: 2); $directories = Storage::directories($directory, depth: 2);
Factory Insert Method
Luke Kuzmish contributed a Factory::insert() method that allows performing a mass insert of models. When using create with a large count, create inserts records in separate insert queries:
User::factory()->count(100)->create(); // Insert model records in bulkUser::factory()->count(100)->insert($attributes = [], $parent = null);
When using the insert() method, no model events are emitted.
Json Schema Improvements
Timo Mühlbach contributed updates to the JSON schema implementation, adding support for backed enums and a format method for StringType:
// Enum Before$schema->string('oneof')->enum(['a', 'b', 'c']); // After$schema->string('oneof')->enum(Options::class); // Add a `format()` method for `StringType$schema->string('somedate')->format('date');
Add ucwords() Method to Stringable
@braxey contributed a ucwords() method to the Str helper and Stringable class:
Str::ucwords('laravel framework'); // Laravel Framework str('laravel frameWork')->lower()->ucwords(); // Laravel Framework
About Command Improvements
Chinmay Purav contributed updates to the php artisan about command to provide detailed information for failover drivers:
- Cache failover
- Queue failover
- Mail failover and roundrobin
See Pull Request #57579, #57582, and #57590 for screenshots.
Release notes
You can see the complete list of new features and updates below and the diff between 12.36.0 and 12.37.0 on GitHub. The following release notes are directly from the changelog:
v12.37.0
- [12.x] allow passing custom "depth" to
files()anddirectories()by @browner12 in https://github.com/laravel/framework/pull/57573 - [12.x] EnumerateValues::value() support objects and return negative values by @rafaelqueiroz in https://github.com/laravel/framework/pull/57570
- [12.x] Move duplicated logic to separate method to be reusable by @shaedrich in https://github.com/laravel/framework/pull/57564
- [12.x] Refactor unreleased data_has helper by @rodrigopedra in https://github.com/laravel/framework/pull/57580
- feat: added detailed about for cache failover driver by @chinmaypurav in https://github.com/laravel/framework/pull/57579
- [12.x] fix data_has empty check by @rodrigopedra in https://github.com/laravel/framework/pull/57586
- [12.x] Fix: use trim before check empty string by @alipowerful7 in https://github.com/laravel/framework/pull/57583
- feat: added detailed about for queue failover driver by @chinmaypurav in https://github.com/laravel/framework/pull/57582
- Feat: add mailers detail for failover or roundrobin by @chinmaypurav in https://github.com/laravel/framework/pull/57590
- [12.x] Refactor: remove un use var by @alipowerful7 in https://github.com/laravel/framework/pull/57617
- [12.x]
Factory@insert()by @cosmastech in https://github.com/laravel/framework/pull/57600 - Fix ScheduleRunCommandTest failure on Windows by using OS-specific success command by @Tina-1300 in https://github.com/laravel/framework/pull/57621
- [12.x] Add ucwords to Str and Stringable by @braxey in https://github.com/laravel/framework/pull/57581
- [12.x] improve
Connection@listen()docblock by @cosmastech in https://github.com/laravel/framework/pull/57633 - [12.x] Fix: Correctly fallback to notification's connection/queue when using viaConnections/viaQueues by @aydinfatih in https://github.com/laravel/framework/pull/57625
- [12.x] Remove unused closure parameters in DatabaseServiceProvider by @sumaiazaman in https://github.com/laravel/framework/pull/57644
- [12.x] Queue tests for Redis Cluster missing QUEUE_CONNECTION by @vadimonus in https://github.com/laravel/framework/pull/57641
- refactor: remove unused parameter in ArtisanServiceProvider by @omarchouman in https://github.com/laravel/framework/pull/57658
- [12.x] Ensure custom validation messages work for the File rule by @jackbayliss in https://github.com/laravel/framework/pull/57656
- Feature/json schema improvements by @Anticom in https://github.com/laravel/framework/pull/57609
- Process queue jobs in background (Concurrently::defer()) by @barryvdh in https://github.com/laravel/framework/pull/57648
- [12.x] ChainedBatch keeps queue and connection of wrapped batch by @vadimonus in https://github.com/laravel/framework/pull/57630