Il s'agit d'un composant permettant de créer des données à la volée dans la base de données.
composer require orm-fixtures --dev
php bin/console make:fixtures
Donner un nom à la fixture (p.ex. ArticlesFixtures).
Une classe ArticlesFixtures est créée dans src/DataFixtures.
Modifier la méthode load de cette classe.
Par exemple :
<?php namespace App\DataFixtures; use App\Entity\Article; use Doctrine\Bundle\FixturesBundle\Fixture; use Doctrine\Persistence\ObjectManager; class ArticlesFixtures extends Fixture { public function load(ObjectManager $manager) { for($i = 1; $i <= 10; $i++) { $article = new Article(); $article ->setTitle("Titre de l'article n°$i") ->setContent("<p>Contenu de l'article n°$i</p>") ->setImage("http://placehold.it/350x150") ->setCreatedAt(new \DateTime()); $manager->persist($article); } $manager->flush(); } }
Attention, tout le contenu de la base de données est supprimé avant la génération des données par les fixtures
php bin/console doctrine:fixtures:load
Installer le composant faker (uniquement dans l'environnement dev) :
composer require fzaninotto/faker --dev
Ensuite il suffit de l'utiliser dans le code de la fixture :
<?php namespace App\DataFixtures; use App\Entity\Personne; use Doctrine\Bundle\FixturesBundle\Fixture; use Doctrine\Persistence\ObjectManager; use Faker; class PersonnesFixtures extends Fixture { public function load(ObjectManager $manager) { $faker = Faker\Factory::create('fr_FR'); for($i = 1; $i <= 10; $i++) { $personne = new Personne(); $personne->setNom($faker->name); $personne->setAdresse($faker->streetAddress); $personne->setVille($faker->city); $personne->setCodePostal($faker->postcode); $personne->setDescription($faker->text); $personne->setEmail($faker->email); $manager->persist($personne); } $manager->flush(); } }
Voir la doc de Faker pour toutes les possibilités.