laravel/framework v12.15.0

Context Contextual Attribute Introduced

Context sharing just got easier with a new Context contextual attribute for resolving context values.

A new Context contextual attribute has been added to Laravel, simplifying the process of using context values in your applications, particularly when dealing with database seeders. Typically, developers creating a User object in one seeder may want to re-use it in another, this ensures fewer database queries and cleaner code.

As an example, in a UserSeeder, you can store context data like this:

use App\Models\User;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\Context;

class UserSeeder extends Seeder
{
    public function run(): void
    {
        $user = User::factory()->create();

        // Store context data for subsequent seeders...
        Context::add('user', $user);
    }
}

And then retrieve it effortlessly in another seeder like this:

use App\Models\Channel;
use App\Models\User;
use Illuminate\Container\Attributes\Context;
use Illuminate\Database\Seeder;

class ChannelSeeder extends Seeder
{
    public function run(#[Context('user')] User $user): void {
        $channel = Channel::factory()->create();

        $channel->users()->attach($user);
    }
}
Contributor
martinbean
Release
v12.15.0
Pull request
#55760

Share this update

Click to copy

Our sponsors.