Aller au contenu principal
Version: 5.x

đź’‰ Seeding

Introduction​

Le seeding est un mécanisme qui vous permettra d'hydrater votre base de donnée pour pouvoir l'utiliser dans votre développement. Le seeding dans Bow est associé à une table lors de la création.

Ajouter un seeder​

Pour ajouter un seeder, on passe par php bow avec la commande add:seeder ensuite le nom de la table.

php bow add:seeder pets

Un fichier avec un timestamp sera créé dans le dossier seeders (par exemple 20251220174703-pets-seeder.php). En voici le contenu :

<?php

use App\Models\Pet;
use Faker\Factory as FakerFactory;

class PetsSeeder20251220174703
{
public function run()
{
$faker = FakerFactory::create();

foreach (range(1, 5) as $value) {
$pet = [
'name' => $faker->name,
'created_at' => date('Y-m-d H:i:s'),
'updated_at' => date('Y-m-d H:i:s'),
];

Pet::create($pet);
}
}
}
remarque

Le seeder est maintenant une classe avec une méthode run(). Le nom de la classe inclut un timestamp pour éviter les conflits. Vous pouvez utiliser le modèle correspondant (Pet::create()) pour insérer les données. Voir la documentation sur les modèles pour plus d'informations.

Lancer le seeding​

Pour lancer le seeding, on utilise la commande seed:file suivie du nom de la classe du seeder.

php bow seed:file PetsSeeder20251220174703

Le seeder correspondant sera exécuté et les données seront insérées dans la base de données via la méthode create() du modèle.

Vous avez la possibilité de lancer tous les seeding avec la commande seed:all. Cela exécutera tous les seeders dans le dossier seeders.

php bow seed:all

Personnalisation du seeder​

Vous pouvez personnaliser le seeder selon vos besoins. Voici un exemple plus complet avec le modèle User :

<?php

use App\Models\User;
use Faker\Factory as FakerFactory;

class UserSeeder20251220174703
{
public function run()
{
$faker = FakerFactory::create();

foreach (range(1, 10) as $value) {
$user = [
'name' => $faker->name,
'description' => $faker->text(100),
'email' => $faker->unique()->email,
'password' => app_hash('password'),
'created_at' => date('Y-m-d H:i:s'),
'updated_at' => date('Y-m-d H:i:s'),
];

User::create($user);
}
}
}
astuce

Utilisez $faker->unique() pour garantir l'unicité des valeurs comme les emails. Consultez la documentation Faker pour voir toutes les possibilités de génération de données.

Il manque quelque chose ?

Si vous rencontrez des problèmes avec la documentation ou si vous avez des suggestions pour améliorer la documentation ou le projet en général, veuillez déposer une issue pour nous, ou envoyer un tweet mentionnant le compte Twitter @bowframework ou sur directement sur le github.