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 withretryAfter
andretryUntil
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)