Back to Blog

Laravel 10.5 Released

Julian Beaujardin
Julian Beaujardin Reference: Laravel News March 31st, 2023

The Laravel team has recently released version 10.5 of the Laravel framework, with several new features and updates. These include a case-sensitive flag for Stringable replace, support for passing empty columns to the database builder insertUsing method, and a new database connection method called selectResultsets.

Additionally, the release includes bug fixes and changes, such as improvements to the handling of empty arrays in multi-key operations for DynamoDbStore and the removal of duplicate constraints in relationships via one().

Case-sensitive flag for Stringable replace

Maarten Paauw contributed a case-sensitive flag to string replacement:

// Case-insensitive Stringable example
// foo/foo/foo
Str::of('x/x/x')->replace('X', 'foo', false);

// Case-insensitive
// foo bar laravel
Str::replace('baz', 'laravel', 'foo bar Baz', false);

// Default case-sensitive will not replace `Baz` with `laravel`
Str::replace('baz', 'laravel', 'foo bar Baz'); // foo bar Baz

Allow insertUsing to have empty columns

Shamimul Alam contributed an assertion helper for the 415 Unsupported Media Type response status code:

$response->assertUnsupportedMediaType();

Convert an existing HasMany to HasOne relationship

Jonny Nott added database support for passing empty columns or ['*'] to insert all columns from the source to the destination:

$builder->from('table1')->insertUsing(
    [],
    function (Builder $query) {
        $query->from('table2')->where('foreign_id', '=', 5);
    }
);

// insert into "table1" select * from "table2" where "foreign_id" = ?'

Database selectResultsets method

Istvan Palinkas contributed a Database connection method which runs a select statement against the database and returns all of the result sets:

[
    $user_params,
    $user_notifications
] = DB::selectResultsets("CALL get_user_params_and_notifications(?)", Auth::id());

Release Notes

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

v10.5.1 (2023-03-29)

Added

  • Added methods to determine if API resource has pivot loaded (#46555)
  • Added caseSensitive flag to Stringable replace function (#46578)
  • Allow insert..select (insertUsing()) to have empty $columns (#46605, 399bff9)
  • Added Illuminate/Database/Connection::selectResultSets() (#46592)

Changed

  • Make sure pivot model has previously defined values (#46559)
  • Move SetUniqueIds to run before the creating event (#46622)

v10.5.0 (2023-03-28)

Added

  • Added Illuminate/Cache/CacheManager::setApplication() (#46594)

Fixed

  • Fix infinite loading on batches list on Horizon (#46536)
  • Fix whereNull queries with raw expressions for the MySql grammar (#46538)
  • Fix getDirty method when using AsEnumArrayObject / AsEnumCollection (#46561)

Changed

  • Skip Illuminate/Support/Reflector::isParameterBackedEnumWithStringBackingType for non ReflectionNamedType (#46511)
  • Replace Deprecated DBAL Comparator creation with schema aware Comparator (#46517)
  • Added Storage::json() method to read and decode a json file (#46548)
  • Force cast json decoded failed_job_ids to array in DatabaseBatchRepository (#46581)
  • Handle empty arrays for DynamoDbStore multi-key operations (#46579)
  • Stop adding constraints twice on *Many to *One relationships via one() (#46575)
  • allow override of the Builder paginate() total (#46415)
  • Add a possibility to set a custom on_stats function for the Http Facade (#46569)