J'ai une table users
et une relation un à zéro/un avec une table businesses
(users.user_id => businesss.user_id). Sur ma table users
, j'ai un discriminateur qui me dit si l'utilisateur est de type business et j'ai donc besoin d'avoir des détails sur la table businesses
également.
Je veux créer mes utilisateurs avec mon usine qui fonctionne actuellement, puis créer uniquement des détails commerciaux où le discriminateur pointe vers un compte professionnel.
J'ai trois options en tête:
user_id
que l'utilisateur a été affecté.user_id
de l'utilisateur déjà créé avec la fabrique commerciale user_id
.users.user_id
et business.user_id
. Cependant, j'utilise un générateur aléatoire pour user.user_type
donc même si j'ai la table businesses
remplie, cela pourrait être pour les utilisateurs qui ont le discriminateur comme 'personnel'.Y a-t-il un autre moyen? Puis-je transmettre des arguments de mon semoir à l'usine?
Les attributs que vous transmettez à la fonction create
seront passés dans votre rappel de définition de modèle comme deuxième argument.
Dans votre cas, vous n'avez même pas besoin d'accéder à ces attributs, car ils seront automatiquement fusionnés dans:
$business = factory(App\Business::class)->create();
factory(App\User::class, 5)->create([
'business_id' => $business->id,
]);
Adaptez cela à vos besoins.
Mon code pour ajouter des utilisateurs 'Admin' polymorphes était:
// run model factory
factory(App\Admin::class, 3)->create()->each(function ($admin) {
$admin->user()->save(
// solved: https://laravel.com/docs/master/database-testing#using-factories (Overriding attributes)
factory(App\User::class)->make([
'userable_id' => $admin->id,
'userable_type' => App\Admin::class
])
);
});
J'espère que cela t'aides.