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();
});
}
}
Read more about Factory Callbacks
Subscribe to my newsletter for the latest updates on my books and digital products.
Find posts, tutorials, and resources quickly.
Subscribe to my newsletter for the latest updates on my books and digital products.