Spread the knowledge

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]);

            collect()->pad($ticket_quantity, [])

    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:


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.

CHECK NOW  Laravel Snippet #19: Laracon VIII, Laravel UI, Passport, Authentication



  • Added extendable relations for models (#33025)
  • Added IlluminateFoundationTestingConcernsMakesHttpRequests::withToken() (#33075, 79383a1)
  • Added the ability to IlluminateDatabaseEloquentRelationsHasOneOrMany::makeMany() (create many without saving) (#33021)
  • Added IlluminateDatabaseSchemaBlueprint::foreignUuid() (#33129)
  • Allow setting the event handler queue via a viaQueue() method (#32770, 852a927)


  • Fixed Model::withoutEvents() not registering listeners inside boot() (#33149, 4bb32ae)

Filed in:
Laravel 7

Source link