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
$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
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();
}
} |
Partager