Back to Blog

Generics Added to Eloquent Builder in Laravel 11.15

Julian Beaujardin
Julian Beaujardin Reference: Laravel News July 10th, 2024

The Laravel team released v11.15 this week, which includes improvements to the make:mail command, support for setting mime types on attachments with Resend, database migration updates, and more.

Add Generics to Eloquent Builder and Relations

Caleb White contributed integrating relation generics into the Laravel framework:

Generics provide better auto-completion and intellisense in the ide without having to rely on Larastan to add generics to the classes through the use of stubs. Having generics in the framework also makes it easier for third party packages to define the inner types on their custom relations.

Caleb has been contributing to Larastan and is now integrating this into the framework, improving static analysis in Laravel! See Pull Request #51851 for more details.

Prompt for Creating a View with make:mail

Christoph Rumpel contributed an update to the make:mail command that prompts the user for the type of view they'd like to create:

Make Router Tappable

Muhammed Sari added the Tappable trait to the Router class, allowing you do write something like the following:

class RouteRegistrar
{
    public function __invoke(Router $router)
    {
        $router->post('redacted', WebhookController::class)
            ->name('redacted');
    }
}

$router
    ->tap(new Redacted1Webhooks\RouteRegistrar())
    ->tap(new Redacted2Webhooks\RouteRegistrar())
//  ...
;

// In tests...
protected function defineRoutes($router)
{
    $router->tap(new \RedactedWebhooks\RouteRegistrar());
}

Updates to Database Migrations

Hafez Divandari contributed updates to database migrations around SQLite and other quality-of-life improvements. In summary, Pull Request #51373 introduces the following updates:

  • Extend SQLite support to 3.26+
  • Add and Drop Foreign Keys on SQLite
  • Add and Drop the primary key on SQLite
  • Preserve the order of commands
  • Blueprint State for SQLite

Support for MIME Types in Resend Mail Transport

Jayan Ratna contributed support for setting mime types on attachments inside a Resend mailable class. This PR adds the withMime() method, which is demonstrated in the pull request as follows:

public function attachments(): array
{
    return [
        Attachment::fromPath('/path/to/file')
                ->as('name.pdf')
                ->withMime('application/pdf'),
    ];
}

Release notes

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