Generics Added to Eloquent Builder in Laravel 11.15
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