...
Actualités WEB et WordPress, thèmes, plugins. Ici, nous partageons des conseils et les meilleures solutions de sites Web.

Comment faire de l’ensemencement de base de données dans Laravel

175

Dans le passé, j’ai publié un article Comment amorcer une base de données en PHP à l’aide de Faker Library. Lors de mes recherches sur ce sujet, j’ai découvert que Laravel utilise également la même bibliothèque pour ensemencer la base de données. Comme j’ai écrit un article sur ce sujet pour PHP, j’ai décidé d’écrire également un article sur l’ensemencement de la base de données Laravel. En effet, Laravel utilise son propre processus pour amorcer la base de données.

Qu’est-ce que l’ensemencement de base de données ?

L’amorçage de la base de données signifie remplir vos tables de base de données avec les données de test par programmation. Avec cette approche, on peut entrer des milliers d’enregistrements dans la base de données en quelques minutes. C’est un moyen efficace plutôt que de le faire manuellement. Vous voudrez peut-être des données factices pour tester votre application et l’ensemencement de la base de données via le programme vous fera gagner beaucoup de temps.

Bibliothèque de faux

Faker est une bibliothèque open source qui génère de fausses données pour la base de données de votre application. En utilisant Faker, on peut insérer des milliers d’entrées dans la base de données en quelques minutes. Cette bibliothèque enregistre un travail de saisie de données ennuyeux pour les développeurs. Vous pouvez obtenir presque tous les types de données que vous souhaitez. La bibliothèque génère un faux e-mail, un nom, un numéro de téléphone portable, des mots, des phrases, des paragraphes, des nombres aléatoires, etc. Vous pouvez lire le type de données qu’ils fournissent sur la documentation.

Laravel installe cette bibliothèque en son cœur. Cela signifie que vous n’avez pas besoin de l’installer séparément. Cela étant dit, examinons comment effectuer l’amorçage de base de données dans Laravel.

Commencer

Pour commencer, je vais créer un tableau « clients » avec le nom des colonnes, l’e-mail et la biographie. Nous verrons le processus d’ensemencement de la table unique. De la même manière, les utilisateurs peuvent créer autant de tables qu’ils le souhaitent.

Créez une table de migration pour les clients à l’aide de la commande :

php artisan make:migration create_customers_table

Ouvrez le fichier de migration et ajoutez les colonnes à la méthode ‘up’ comme indiqué ci-dessous.

public function up()
{
    Schema::create('customers', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->string('email');
        $table->text('bio');
        $table->timestamps();
    });
}

Exécutez la commande migrate qui créera une table « clients » dans votre base de données.

php artisan migrate

Ensuite, créez un modèle « Client » qui correspond à la table « clients ». À partir de Laravel 8.x, vos modèles seront créés dans le répertoire ‘App/Models’. Pour ce tutoriel, je suppose que vous utilisez Laravel 8.x. Dans l’ancienne version de Laravel, vous devez ajuster le chemin du modèle.

php artisan make:model Customer

Amorçage de base de données dans Laravel

L’amorçage d’une base de données dans Laravel vous oblige à suivre quelques étapes qui consistent à écrire des seeders, à créer une fabrique de modèles et à exécuter des seeders. Faisons-le un par un.

Écriture de semoirs

Si vous regardez le système de fichiers Laravel, vous remarquez le répertoire database/seeders. Toutes les classes de graines iront dans ce répertoire. Une classe de départ a la runméthode à partir de laquelle vous pouvez insérer les données dans la table.

Créez une classe de graines CustomerSeeder à l’aide de la commande :

php artisan make:seeder CustomerSeeder

Après avoir exécuté cette commande, vous devriez voir le CustomerSeeder.phpfichier créé sous database/seeders. Ouvrez ce fichier et runajoutez le code ci-dessous à la fonction.

public function run()
{
    AppModelsCustomer::factory()->count(50)->create()->each(function ($customer) {
        $customer->save();
    });
}

Ici, j’appelle l’usine Client que nous allons créer à l’étape suivante. Remarquez que j’ai passé la valeur 50 à la méthode ‘count’. Cela signifie que 50 lignes doivent être insérées dans la table « clients ». Ajustez cette valeur à votre guise.

Création d’usines

Le code que j’ai écrit CustomerSeederrecherchera une usine pour obtenir les données de test. Cela signifie que nous devons créer une fabrique de modèles. Je vais donner un nom à l’usine en tant que CustomerFactory. Exécutez la commande pour générer la fabrique de modèles.

php artisan make:factory CustomerFactory --model=Customer

Cette commande créera un CustomerFactory.phpà l’intérieur du database/factoriesrépertoire. Ouvrez ce fichier et à la méthode de définition générez une donnée de test comme suit.

public function definition()
{
    return [
        'name' => $this->faker->name,
        'email' => $this->faker->unique()->safeEmail,
        'bio' => $this->faker->text,
    ];
}

Le tableau ci-dessus renvoie un nom, un e-mail et un texte choisis au hasard pour la biographie.

Semoirs en marche

Nous avons tous réglé avec le semoir et l’usine. Exécutez maintenant notre semoir à l’aide de la commande ci-dessous.

php artisan db:seed --class=CustomerSeeder

Vérifiez votre table « clients » et elle devrait contenir les 50 entrées fictives.

La commande ci-dessus exécute un seul semoir que nous avons passé explicitement. Supposons que vous souhaitiez créer plusieurs semoirs et les exécuter tous à l’aide d’une seule commande. Dans de tels cas, vous devez appeler vos seeders depuis le DatabaseSeederqui se trouve dans le même répertoire database/seeders.

public function run()
    {
        $this->call(CustomerSeeder::class);
        // call as many seeders you wish
    }

L’utilisateur peut créer autant de semoirs selon ses besoins et les appeler à partir de cette runméthode.

Enfin, exécutez les semoirs à l’aide de la commande ci-dessous.

php artisan db:seed

Il appellera tous les seeders de la runméthode et l’exécutera.

J’espère que vous comprenez l’amorçage de base de données dans Laravel. J’aimerais entendre vos pensées et suggestions dans la section des commentaires ci-dessous.

Articles Liés

Source d’enregistrement: artisansweb.net

Ce site utilise des cookies pour améliorer votre expérience. Nous supposerons que cela vous convient, mais vous pouvez vous désinscrire si vous le souhaitez. J'accepte Plus de détails