News

Laravel 10.12 Released

Published
Laravel 10.12 Released image

Release updates

Never miss a Laravel release

Get an email whenever a new Laravel release lands.

The Laravel team released v10.12 with conditional methods added to Sleep, a new job timeout event, timezone validation parameters, and more:

Conditional sleep

Bradie Tilley contributed the ability to add conditions to the new Sleep class introduced in Laravel 10.10:

Sleep::for(1)->second()->unless($task->completed());
Sleep::for(1)->second()->when($task->pending());
 
// Closures
Sleep::for(1)->second()->unless(fn () => $task->completed());
Sleep::for(1)->second()->when(fn () => $task->pending());

Job timeout occurred event

Saeed Hosseini contributed a JobTimedOut event that a queue worker fires when the job has timed out:

use Illuminate\Queue\Events\JobTimedOut;
 
/**
* The event to listener mappings for the application.
*
* @var array<class-string, array<int, class-string>>
*/
protected $listen = [
JobTimedOut::class => [
SendJobTimedOutNotification::class,
],
];

Inline attachment support for Markdown mailables

Nuno Maduro contributed inline attachment support for Markdown mailables:

This pull request fixes markdown access to $message variable on template, by simply lazy render the markdown on the moment the $message variable as already available as view data.

See Pull Request #47140 for details.

Method not allowed HTTP assertion

Azim Kordpour contributed an assertion for HTTP status 405 (Method Not Allowed) that you can use to verify a route doesn't respond to certain HTTP verbs:

$this->get('/')->assertOk();
 
$this->post('/')->assertMethodNotAllowed();
$this->patch('/')->assertMethodNotAllowed();
$this->put('/')->assertMethodNotAllowed();
$this->delete('/')->assertMethodNotAllowed();

Eloquent forceCreateQuietly() method

Volodya Kurshudyan contributed a forceCreateQuietly() method to Eloquent that forces the creation of a model without triggering any model events:

Post::forceCreateQuietly($data);

Add parameters to timezone validation rule

Artyom Yavdoshchuk added support for using parameters with the timezone validation rule:

'timezone' // works as before
'timezone:Africa' // accepts only Africans timezones
'timezone:All' // works the same as without any parameters
'timezone:All_with_BC' // accepts timezones with Backward Compatibility (Europe/Kiev will be accepted)
'timezone:Per_country,US' // accepts only US timezones

Here's an example from the pull request test cases:

$v = new Validator(
$trans,
['foo' => 'australia/sydney'],
['foo' => 'Timezone:Australia']
);
 
$this->assertFalse($v->passes());

Release Notes

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

v10.12.0

Added

  • Added Illuminate/Queue/Events/JobTimedOut.php (#47068)
  • Added when() and unless() methods to Illuminate/Support/Sleep (#47114)
  • Adds inline attachments support for markdown mailables (#47140)
  • Added Illuminate/Testing/Concerns/AssertsStatusCodes::assertMethodNotAllowed() (#47169)
  • Added forceCreateQuietly method (#47162)
  • Added parameters to timezone validation rule (#47171)

Fixed

  • Fixes singleton and api singletons creatable|destryoable|only|except combinations (#47098)
  • Don't use empty key or secret for DynamoDBClient (#47144)

Changed

  • Remove session on authenticatable deletion (#47141)
  • Added error handling and ensure re-enabling of foreign key constraints in Illuminate/Database/Schema/Builder::withoutForeignKeyConstraints() (#47182)

Refactoring

  • Remove useless else statements (#47161)
Paul Redmond photo

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

Sponsored

serpapi logo
SerpApi

The Web Search API for Your LLM and AI Applications

Visit SerpApi

The latest

View all →
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
Pest 5 Released With Test Impact Analysis, Agent Verification, and Evals image

Pest 5 Released With Test Impact Analysis, Agent Verification, and Evals

Read article
Queue-SQL: Run Mass Deletes and Updates Across Parallel Queue Jobs image

Queue-SQL: Run Mass Deletes and Updates Across Parallel Queue Jobs

Read article
Blade Formatting in Laravel Pint image

Blade Formatting in Laravel Pint

Read article
Inertia DevTools Is Now on the Chrome Web Store image

Inertia DevTools Is Now on the Chrome Web Store

Read article