Laravel - Ensemencement Des Relations

Dans Laravel, base de données de semis est généralement accompli par le Modèle des usines. Si vous définissez un plan détaillé pour votre Modèle à l'aide de Faussaire de données, et de dire comment beaucoup de cas, vous devez:

$factory->define(App\User::class, function (Faker\Generator $faker) {
    return [
        'name' => $faker->name,
        'email' => $faker->email,
        'password' => bcrypt(str_random(10)),
        'remember_token' => str_random(10),
    ];
});

$user = factory(App\User::class, 50)->create();

Cependant, disons que votre modèle Utilisateur dispose d'un hasMany relation avec de nombreux autres Modèles, comme un Post modèle par exemple:

Post:
   id
   name
   body
   user_id

Donc, dans cette situation, vous voulez des graines de votre table Posts avec réelle les utilisateurs qui ont été ensemencées dans votre table des Utilisateurs. Cela ne semble pas être discutées, mais j'ai trouvé le suivant dans la Laravel docs:

$users = factory(App\User::class, 3)
    ->create()
    ->each(function($u) {
         $u->posts()->save(factory(App\Post::class)->make());
    });

Donc dans votre usine, vous créez X nombre de Postes pour chaque Utilisateur que vous créez. Cependant, dans une grande demande d'où peut-être 50 - 75 Modèles partagent des relations avec le Modèle de l'Utilisateur, l'Utilisateur de votre Semoir essentiellement en fin de semis de l'ensemble de la base de données avec toutes ses relations.

Ma question est: Est-ce la meilleure façon de gérer cela? La seule autre chose que je peux penser à est de la Graine les Utilisateurs au premier (sans semis de toutes les relations), puis tirez-le hasard des Utilisateurs à partir de la DB est nécessaire, pendant que vous êtes à l'ensemencement autres Modèles. Toutefois, dans les cas où ils ont besoin d'être unique, vous devez suivre les Utilisateurs qui avaient été utilisés. Aussi, il semble que ce serait d'ajouter beaucoup de requête supplémentaire-en vrac pour le semis processus.

InformationsquelleAutor djt | 2016-02-17