J'ai Users
y UserProfiles
.
Tous Users
ont un et un seul UserProfile
.
Mon UserTableSeeder
crée 25 enregistrements et, pour chacun d'entre eux, génère un message de type UserProfile
.
Pour une raison quelconque, j'obtiens le double des enregistrements sur Users
et le montant indiqué sur UserProfile
Alors 50 Users
sont insérés et 25 UserProfiles
sont en cours d'insertion.
Graine :
public function run()
{
factory(App\User::class, 25)->create()->each(function ($user) {
$user->profile()->save(factory(App\UserProfile::class)->make());
});
}
Classe d'utilisateurs :
class User extends Model
{
public function profile() {
return $this->hasOne('App\UserProfile');
}
}
UserFactory :
$factory->define(User::class, function (Faker $faker) {
return [
'username' => $faker->userName(),
'email' => $faker->unique()->safeEmail,
'email_verified_at' => now(),
'password' => '$2y$10$TKh8H1.PfQx37YgCzwiKb.KjNyWgaHb9cbcoQgdIVFlYg7B77UdFm', // secret
'remember_token' => Str::random(10),
];
});
UserProfileFactory :
$factory->define(UserProfile::class, function (Faker $faker) {
return [
'user_id' => factory('App\User'::class)->create()->id,
'bio' => $faker->paragraph()
];
});
Modèle UserProfile :
class UserProfile extends Model
{
public function user() {
return $this->belongsTo('App\User');
}
}
Le résultat attendu était 25 utilisateurs et 25 tables d'utilisateurs puisque tous les utilisateurs ont un profil.