Bonjour à tous,

En voulant mettre en relation 2 fixtures, je voulais créer une constante 'public const MAX_TYPES = count($types);' dans ma fixture, mais ni le terme public ni const ne sont acceptés dans le code.

J'ai pourtant regardé dans des tutos, l'expression semble correcte quant à la déclaration de constantes publiques.

Cette constante permettrait de connaître la longueur du tableau '$types' de façon à randomiser dans la fixture dépendante avec un

Code : Sélectionner tout - Visualiser dans une fenêtre à part
$this->getReference('type_vehicule_'.rand(1,TypesVehicules::MAX_TYPES)
Car je n'ai pas trouvé d'autre méthode pour obtenir une valeur aléatoire de la part d'une fixture parente...

Je suis preneur si une autre solution existe...

Merci d'avance

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
 
namespace App\DataFixtures;
 
use App\Entity\TypesVehicules;
use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Persistence\ObjectManager;
use Symfony\Component\String\Slugger\SluggerInterface;
 
class TypesVehiculesFixtures extends Fixture
{
 
    public function __construct(private SluggerInterface $slugger){      
 
    }        
 
    public function load(ObjectManager $manager): void
    {
 
        $types = ['citadine', 'véhicule industriel', 'familial', 'berline', 'limousine', 'motocyclette', '3 roues', 'quad'];
      public const MAX_TYPES = count($types);
 
        for ($i = 0; $i < count($types); $i++) {
 
            $type = new TypesVehicules();
            $type->setNomtype($types[$i]);
            $type->setSlug($this->slugger->slug($types[$i]));
 
            $manager->persist($type);
            $this->addReference('type_vehicule_' . $i, $type);
        }
        $manager->flush();
    }
}