Laravel 10.37 Released - TechvBlogs

Laravel 10.37 Released

Laravel enthusiasts rejoice! Explore the latest features and enhancements in the recently released Laravel 10.37 update, as we delve into the exciting improvements that make web development with Laravel even more powerful and efficient.


Smit Pipaliya - Author - TechvBlogs
Smit Pipaliya
 

4 months ago

TechvBlogs - Google News

This week, the Laravel team unveiled version 10.37, featuring notable enhancements such as the capability to store batch metadata in DynamoDB, the ability to assert multiple errors on a field, and several other additions. Let's delve into more details about the new features introduced in this release:

Storing batches in DynamoDB

Sebastien Armand made a significant contribution by enabling the storage of batch metadata in DynamoDB, offering an alternative to using a relational database. To configure your application to utilize DynamoDB, you can implement the following configuration in your queue.php configuration file:

'batching' => [
    'driver' => env('QUEUE_FAILED_DRIVER', 'dynamodb'),
    'key' => env('AWS_ACCESS_KEY_ID'),
    'secret' => env('AWS_SECRET_ACCESS_KEY'),
    'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
    'table' => 'job_batches',
],

For comprehensive setup details, refer to the documentation, and for a more in-depth understanding of the implementation, explore the details provided in Pull Request #49169.

Assert multiple error messages

Tim MacDonald has introduced a valuable contribution, enabling the ability to assert a list of errors on a field through the assertInvalid() method. This enhancement offers a more flexible and precise way to handle error assertions in Laravel testing.

// Before, separate assertion calls are required
$response->assertInvalid(['email' => 'The email field must be a string.']);
$response->assertInvalid(['email' => 'The email field must be at least 5 characters.']);
 
// As of Laravel 10.37 you can now do:
$response->assertInvalid([
    'email' => [
        'The email field must be a string.',
        'The email field must be at least 5 characters.',
    ],
]);

Add engine() method to Blueprint

James Brooks has made a noteworthy contribution by introducing the engine() method when defining migration schemas. This enhancement provides additional control and customization options for defining the database engine during the migration process.

// Previously
Schema::table('foo', function (Blueprint $table) {
    $table->engine = 'InnoDB';
 
    // ...
});
 
// Using the new engine() method
Schema::table('foo', function (Blueprint $table) {
    $table->engine('InnoDB');
 
    // ...
});

Get the indexes and foreign keys of a table

Hafez Divandari has made a valuable contribution by adding getIndexes() and getForeignKeys() methods. These methods allow you to retrieve information about the indexes and foreign keys of a given table schema, providing enhanced capabilities for managing and inspecting database structures.

Schema::getIndexes();
Schema::getForeignKeys();

In detail, the getIndexes() method returns an array containing various keys such as name, columns, type, unique, and primary. On the other hand, the getForeignKeys() method returns an array for each foreign key, providing details like name, columns, foreign_schema, foreign_table, foreign_columns, on_update, and on_delete. These methods offer comprehensive insights into the structure and relationships of the given table schema.

For a deeper understanding of the implementation details and examples related to these enhancements, refer to Pull Request #49204 and Pull Request #49264. These pull requests offer valuable insights into the changes and additions made by the contributors.

Release notes

Certainly! To explore the complete list of new features and updates, as well as the differences between versions 10.35.0 and 10.37.0, you can refer to the GitHub repository. The following release notes are directly sourced from the changelog, providing a detailed overview of the changes introduced in this version.

v10.37.0

 
 

Comments (0)

Comment


Note: All Input Fields are required.