Aller au contenu principal

Utilisation des Fixtures

Comment utiliser les fixtures pour peupler votre base de données dans Symfony

Notions théoriques

Les fixtures sont un moyen de charger un ensemble de données fixes dans votre base de données. C'est particulièrement utile lorsque vous voulez peupler votre base de données avec des données pour tester votre application pendant le développement.

Symfony ne fournit pas de fonctionnalité de fixtures par défaut, mais il existe une bibliothèque appelée DoctrineFixturesBundle que vous pouvez utiliser. Cette bibliothèque vous permet de créer des classes de fixtures qui définissent quelles données charger dans la base de données.

Exemple de mise en application

Pour utiliser DoctrineFixturesBundle, vous devez d'abord l'installer en exécutant la commande suivante :

composer require --dev orm-fixtures

Ensuite, vous pouvez créer une classe de fixtures dans le répertoire src/DataFixtures de votre projet. Par exemple, pour créer des données de test (5 personnages) pour votre entité Character, vous pourriez créer une classe CharacterFixtures :

namespace App\DataFixtures;

use App\Entity\Character;
use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Persistence\ObjectManager;

class CharacterFixtures extends Fixture
{
public function load(ObjectManager $manager)
{
for ($i = 0; $i < 5; $i++) {
$character = new Character();
$character->setName('Personnage n°' . $i);
$character->setExperience($i * 10);

$manager->persist($character);
}

$manager->flush();
}
}

Pour charger les fixtures dans la base de données, vous pouvez exécuter la commande suivante :

php bin/console doctrine:fixtures:load
astuce

Pour créer facilement un fichier de fixtures, vous pouvez exécuter la commande suivante :

php bin/console make:fixture

Test de mémorisation/compréhension


Qu'est-ce qu'une fixture dans Symfony ?


Comment installe-t-on DoctrineFixturesBundle dans Symfony ?


Comment crée-t-on une classe de fixtures dans Symfony ?


Comment charge-t-on les fixtures dans la base de données dans Symfony ?



TP pour réfléchir et résoudre des problèmes

Votre défi pour aujourd'hui consiste à créer des fixtures pour votre application

Vous devrez créer une classe de fixtures pour votre entité Character qui crée 10 personnages avec différents niveaux d'expérience.

Une solution