ensureSite( $manager, name: 'Chatellerault', street: "14 All. d'Argenson", complement: null, postalCode: '86100', city: 'Châtellerault', color: '#056CF2', ); // Saint-Jean : jaune vif. Le nom du site (identifier) ne reflete // pas la ville reelle (Fontenet) — c'est une nomenclature interne // client. $this->ensureSite( $manager, name: 'Saint-Jean', street: 'Z i', complement: null, postalCode: '17400', city: 'Fontenet', color: '#F3CB00', ); // Pommevic : vert clair. $this->ensureSite( $manager, name: 'Pommevic', street: '1 Av. Jean Duquesne', complement: null, postalCode: '82400', city: 'Pommevic', color: '#74BF04', ); $manager->flush(); } /** * Cree le site s'il n'existe pas encore, sinon re-aligne rue, complement, * code postal, ville et couleur sur les valeurs de reference. * * Note : le nom sert de cle de lookup (il est unique en base) et n'est * donc pas resynchronise. Consequence : renommer un site dans la * fixture cree un nouveau site sans supprimer l'ancien, sauf si le * purger Doctrine est actif (cas nominal de `doctrine:fixtures:load`). */ private function ensureSite( ObjectManager $manager, string $name, string $street, ?string $complement, string $postalCode, string $city, string $color, ): Site { $site = $this->siteRepository->findByName($name); if (null === $site) { $site = new Site($name, $street, $complement, $postalCode, $city, $color); $manager->persist($site); return $site; } $site->setStreet($street); $site->setComplement($complement); $site->setPostalCode($postalCode); $site->setCity($city); $site->setColor($color); return $site; } }