Bonjour à tous,

Je cherche à mettre en place des fixtures sur les entités "Intervenants" et "TypesIntervenants" qui sont en relation ManyToOne sachant que je voudrais que "Intervenants" ait soit "Vendeur" soit "Intervenant" comme valeur aléatoire...

J'ai essayé en mettant en place les fixtures ci-joint mais une erreur "type_intervenant_1" ou "type_intervenant_2" does not exists alors que celui-ci est bien en base...

Il faut qu'un intervenant ait l'ID d'un type d'intervenant existant dans la base de façon à ce que la relation perdure entre eux...

Je pense me tromper d'approche quelque part...

Merci d'avance pour vos conseils avisés...

TypesIntervenantsFixtures.php :

namespace App\DataFixtures;

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

class TypesIntervenantsFixtures extends Fixture
{
    public function load(ObjectManager $manager): void
    {
        $type = new TypesIntervenants();

        $type->setTypeIntervenant("Vendeur");
        $this->addReference('type_intervenant_1', $type);
        $manager->persist($type);

        $type = new TypesIntervenants();

        $type->setTypeIntervenant("Intervenant");
        $this->addReference('type_intervenant_2', $type);
        $manager->persist($type);

        $manager->flush();
    }
}

IntervenantsFixtures>.php :

<?php

namespace App\DataFixtures;

use App\Entity\Intervenants;
use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Persistence\ObjectManager;
use Faker;

class IntervenantsFixtures extends Fixture
{
    public function load(ObjectManager $manager): void
    {
        $faker = Faker\Factory::create("fr_FR");

        for ($i = 0; $i <= 10; $i++) {

            $int = new Intervenants();

            $int
                ->setCodeIntervenant(random_int(001, 010))
                ->setIntervenant($faker->firstName() . ' ' . $faker->lastName())
                ->setCodeNan(random_int(000000001, 000000010))
                ->setRoleIntervenant($this->getReference('type_intervenant_' . rand(1, 2)));

            $manager->persist($int);
            $manager->flush();
        }
    }

    public function getDependencies()
    {
        return [
            TypesIntervenantsFixtures::class
        ];
    }
}

1 réponse


Problème solutionné il manquait un 'implement DependentFixtureInterface"