DEV Community

David Carr
David Carr

Posted on • Originally published at dcblog.dev on

Laravel update factory after creation

Using a Laravel factory to create a user and then update a relationship directly is possible using factory callbacks. Using a configure method you can call afterCreating and afterMaking closures:

 <?php namespace Database\Factories; use App\Models\Tenant; use App\Models\User; use Illuminate\Database\Eloquent\Factories\Factory; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Str; class UserFactory extends Factory { protected $model = User::class; public function definition(): array { return [ 'name' => $this->faker->name(), 'slug' => Str::slug($this->faker->name()), 'email' => $this->faker->email(), 'password' => Hash::make('password'), 'is_active' => 1, 'remember_token' => Str::random(10), ]; } public function configure() { return $this->afterCreating(function (User $user) { $user->tenant_id = Tenant::factory()->create([ 'owner_id' => $user->id ]); $user->save(); }); } } 
Enter fullscreen mode Exit fullscreen mode

Read more about Factory Callbacks

Top comments (0)