News

Laravel 7.15 Released

Published
Laravel 7.15 Released image

Release updates

Never miss a Laravel release

Get an email whenever a new Laravel release lands.

The Laravel team released v7.15.0 with a withToken() test helper, a new model method to define relationships between models outside of a class definition, along with the latest new features, fixes, and changes in the 7.x branch:

Extendable Relations for Models

Gergő D. Nagy contributed a resolveRelationUsing method to models, which allows defining relationships between models from outside of model class definitions:

Order::resolveRelationUsing('customer', function ($model) {
return $model->belongsTo(Customer::class, 'customer_id');
});

The withToken() Test Helper

Aryeh Raber contributed the withToken() HTTP test helper:

// Using withHeader
$response = $this->withHeader('Authorization', 'Bearer test_token')->postJson('/some-endpoint');
 
// The new withToken() helper
$response = $this->withToken('test_token')->postJson('/some-endpoint');

Make Many Models

Ahmed Sayed contributed a makeMany() to create many related models without saving. The pull request provides the following example:

public function orderTickets(string $email, int $ticket_quantity)
{
$order = $this->orders()->create(['email' => $email]);
 
$order->tickets()->insert(
$order->tickets()->makeMany(
collect()->pad($ticket_quantity, [])
)->toArray()
);
 
return $order;
}

Foreign UUID Column Definition

Paul Adams contributed a foreignUuid() column definition for UUID foreign keys. Here are some examples from the pull request’s tests:

$table->foreignUuid('company_id')->constrained();
$table->foreignUuid('laravel_idea_id')->constrained();
$table->foreignUuid('team_id')->references('id')->on('teams');
$table->foreignUuid('team_column_id')->constrained('teams');

Set the Event Handler Queue

@lupinitylabs contributed the ability to define a viaQueue() method to define which queue to use:

This pull request proposes a non-breaking change to the Dispatcher class that allows a user to set the queue name by defining a viaQueue() method within the Listener, as it is already done with retryAfter and retryUntil methods.

If no getQueue method is defined, the code falls back to use the $queue attribute or null, as it was before.

The benefit of this change is to provide developers with a flexible way to influence the target queues instead of having to hard code them.

Release Notes

You can see the full list of new features and updates below and the diff between 7.14.0 and 7.15.0 on GitHub.

v7.15.0

Added

  • Added extendable relations for models (#33025)
  • Added Illuminate\Foundation\Testing\Concerns\MakesHttpRequests::withToken() (#33075, 79383a1)
  • Added the ability to Illuminate\Database\Eloquent\Relations\HasOneOrMany::makeMany() (create many without saving) (#33021)
  • Added Illuminate\Database\Schema\Blueprint::foreignUuid() (#33129)
  • Allow setting the event handler queue via a viaQueue() method (#32770, 852a927)

Fixed

  • Fixed Model::withoutEvents() not registering listeners inside boot() (#33149, 4bb32ae)
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 →
Building EasyReply: How We Used Laravel to Unify Customer Support image

Building EasyReply: How We Used Laravel to Unify Customer Support

Read article
PostgreSQL Monitoring and Schema Linting for Laravel with Vacuum image

PostgreSQL Monitoring and Schema Linting for Laravel with Vacuum

Read article
PayZephyr: One Payment API for Stripe, Paystack, and PayPal image

PayZephyr: One Payment API for Stripe, Paystack, and PayPal

Read article
Bifrost Turns One With AI Builds and New Workflows image

Bifrost Turns One With AI Builds and New Workflows

Read article
Preview Blade Templates in macOS Finder with Quick Blade image

Preview Blade Templates in macOS Finder with Quick Blade

Read article
Artisan Debugging Commands in Laravel Telescope 5.24.0 image

Artisan Debugging Commands in Laravel Telescope 5.24.0

Read article