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