<< TP 13
TP 15 >>

14. Test d'insertion global





14.1. Insérer conducteur, véhicule et équipements

  1. <?php
  2. // src/Controller/ConducteurController.php
  3. namespace App\Controller;
  4.  
  5. use App\Entity\Conducteur;
  6. use App\Entity\Vehicule;
  7. use App\Entity\Equipement;
  8. use App\Entity\EquipementVehicule;
  9.  
  10. use App\Repository\ConducteurRepository;
  11. use App\Repository\VehiculeRepository;
  12. use App\Repository\EquipementRepository;
  13. use App\Repository\EquipementVehiculeRepository;
  14.  
  15.  
  16. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  17. use Symfony\Component\HttpFoundation\Request;
  18. use Symfony\Component\HttpFoundation\Response;
  19. use Symfony\Component\Routing\Annotation\Route;
  20. use Doctrine\ORM\EntityManagerInterface;
  21.  
  22. class TestController extends AbstractController
  23. {
  24.  
  25.  
  26.     /**
  27.      * Insertion :
  28.      * - d'un conducteur nommé Donald
  29.      * - d'un véhicule : Audi, Q5, acheté le 30/09/1970 et associé à Donald
  30.      * - création d'équipements :
  31.      *    - Jantes 17 pouces, 356 €
  32.      *    - insert bois, 200 €
  33.      * - ajout de 4 jantes au véhicule Audi de Donald ainsi que l'insert bois
  34.      *
  35.      * Au final on redirige vers le template test.html.twig afin d'afficher
  36.      * le résultat
  37.      */
  38.    
  39.     #[Route('/test/inserer', name: 'test_inserer')]
  40.    public function inserer(Request $request, EntityManagerInterface $entityManager): Response
  41.     {
  42.         // création d'un conducteur et renseignement des champs
  43.         $conducteur = new Conducteur();
  44.         $conducteur->SetCoNom("Donald");
  45.  
  46.         // création d'un véhicule et renseignement des champs
  47.         $vehicule = new Vehicule();
  48.         $vehicule->setVeMarque('Audi');
  49.         $vehicule->setVeModele('Q5');
  50.         $vehicule->setVeDate(new \DateTime('1970-09-30'));
  51.  
  52.         // associer le conducteur au véhicule
  53.         $vehicule->setVeConducteur($conducteur);
  54.  
  55.         // enregistrement conducteur
  56.         $entityManager->persist($conducteur);
  57.        
  58.         // créations des équipements
  59.         $equipement_1 = new Equipement();
  60.         $equipement_1->setEqLibelle('Jantes 17 pouces');
  61.         $equipement_1->setEqPrix(356);
  62.  
  63.         $equipement_2 = new Equipement();
  64.         $equipement_2->setEqLibelle('Insert bois');
  65.         $equipement_2->setEqPrix(200);
  66.  
  67.         // création d'un association entre équipement 1 et véhicule
  68.         $equip_vehi_1 = new EquipementVehicule();
  69.         $equip_vehi_1->setEqVeVehicule($vehicule);
  70.         $equip_vehi_1->setEqVeEquipement($equipement_1);
  71.         $equip_vehi_1->setEqVeQuantite(4);
  72.  
  73.         // création d'un association entre équipement 2 et véhicule
  74.         $equip_vehi_2 = new EquipementVehicule();
  75.         $equip_vehi_2->setEqVeVehicule($vehicule);
  76.         $equip_vehi_2->setEqVeEquipement($equipement_2);
  77.         $equip_vehi_2->setEqVeQuantite(1);
  78.        
  79.         // mise en relation équipements et véhicules
  80.         $vehicule->addVeEquipementVehicule($equip_vehi_1);
  81.         $vehicule->addVeEquipementVehicule($equip_vehi_2);
  82.        
  83.         $equipement_1->addEqEquipementVehicule($equip_vehi_1);
  84.         $equipement_2->addEqEquipementVehicule($equip_vehi_2);
  85.  
  86.         // enregistrement des équipements
  87.         $entityManager->persist($equipement_1);
  88.         $entityManager->persist($equipement_2);
  89.  
  90.         // enregistrement des associations équipements/véhicule
  91.         $entityManager->persist($equip_vehi_1);
  92.         $entityManager->persist($equip_vehi_2);
  93.        
  94.         // enregistrement du véhicule
  95.         $entityManager->persist($vehicule);
  96.         $entityManager->flush();
  97.  
  98.  
  99.         $repo_conducteur = $entityManager->getRepository(Conducteur::class);
  100.         $repo_vehicule = $entityManager->getRepository(Vehicule::class);
  101.         $repo_equipement = $entityManager->getRepository(Equipement::class);
  102.  
  103.         $liste_conducteur = $repo_conducteur->findAll();
  104.         $liste_vehicule = $repo_vehicule->findAll();
  105.         $liste_equipement = $repo_equipement->findAll();
  106.        
  107.  
  108.         return $this->render('test.html.twig', [
  109.             'liste_conducteur' => $liste_conducteur,
  110.             'liste_vehicule' => $liste_vehicule,
  111.             'liste_equipement' => $liste_equipement
  112.         ]);
  113.     }
  114.  
  115.  
  116.     /**
  117.      * Affichage du contenu de la base
  118.      */
  119.     #[Route('/test/lister', name: 'test_lister')]
  120.    public function route2(Request $request, EntityManagerInterface $entityManager): Response
  121.     {
  122.         $repo_conducteur = $entityManager->getRepository(Conducteur::class);
  123.         $repo_vehicule = $entityManager->getRepository(Vehicule::class);
  124.         $repo_equipement = $entityManager->getRepository(Equipement::class);
  125.  
  126.         $liste_conducteur = $repo_conducteur->findAll();
  127.         $liste_vehicule = $repo_vehicule->findAll();
  128.         $liste_equipement = $repo_equipement->findAll();
  129.        
  130.         return $this->render('test.html.twig', [
  131.             'liste_conducteur' => $liste_conducteur,
  132.             'liste_vehicule' => $liste_vehicule,
  133.             'liste_equipement' => $liste_equipement
  134.         ]);
  135.     }
  136.  
  137.     // Ajoutez d'autres méthodes pour afficher, modifier, supprimer les conducteurs, etc.
  138. }
  139.  





<< TP 13
TP 15 >>