Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
875 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Générer des tables dynamiques avec Doctrine Symfony 4.4.3

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Générer des tables dynamiques avec Doctrine Symfony 4.4.3

n°2349049
devuser
Posté le 22-03-2020 à 16:27:30  profilanswer
 

Bonjour,
 
J'essaye via mon script de générer des tables dynamiquement avec Doctrine. En effet, j'ai une entité qui contient la liste de production (Production.php), lorsque je lance ma requête pour sélectionner la liste de productions, je récupère un champ (date_production) sous forme (mois_année => m_Y). Je me sert de ce champ comme alias pour créer mes nouvelles tables en fonction de la date de production. Par exemple : production_m_Y (production_03_2020). La création de mes tables se déroule bien, le problème que je rencontre est : quand je récupère deux dates différentes par exemple 02_2020 et 03_2020, mon script me crée une première table production_02_2020 et la deuxième table au lieu de me créer production_03_2020, il me crée production_02_2020_03_2020. Je galère à trouver une solution pour corriger ce problème. Merci pour votre aide !
 
Script ci-dessous :
 

Code :
  1. // script pour créer une table
  2. public function createTable($entity, $month_year)
  3. {   
  4.     $metaData = $this->em->getClassMetadata($entity); 
  5.     $metaData->setPrimaryTable(['name' => $metaData->getTableName() .'_'. $month_year]); 
  6.     $schemaTool = new \Doctrine\ORM\Tools\SchemaTool($this->em); 
  7.     $schemaTool->createSchema([$metaData]);
  8. }


Code :
  1. $productions = $this-em->getRepository(Production::class)->findAll();
  2. foreach ($productions as $production) { 
  3.     $productionDate = $production['dateProduction'];
  4.     $date = $productionDate->format('m_Y');
  5.     if ($this->em->getConnection()->getSchemaManager()->tablesExist(['production_'  . $date]) === false) {         
  6.         $this->createTable(Production::class, $date);       
  7.     }
  8. }


Code :
  1. // L'entité Production
  2. namespace App\Entity;
  3. use Doctrine\ORM\Mapping as ORM;
  4. /**
  5. * Production  
  6. *
  7. * @ORM\Table(name="production" )
  8. * @ORM\Entity
  9. *
  10.  
  11. class Production  
  12. {
  13.  
  14. /**     
  15. * @var int
  16. *
  17. * @ORM\Column(name="id", type="integer", nullable=false)
  18. * @ORM\Id
  19. * @ORM\GeneratedValue(strategy="IDENTITY" )
  20. */ 
  21. private $id;   
  22. /**
  23. * @var string
  24. *
  25. * @ORM\Column(name="name", type="string", length=2, nullable=false)     
  26. */
  27. private $name;   
  28. /**
  29. * @var datetime     
  30. *
  31. * @ORM\Column(name="date_production", type="datetime", nullable=false)     
  32. */
  33. private $dateProduction;
  34. // ........... getters and setters
  35. }

mood
Publicité
Posté le 22-03-2020 à 16:27:30  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Générer des tables dynamiques avec Doctrine Symfony 4.4.3

 

Sujets relatifs
Symfony - Webpack Encore - Best practices[POSTGRESQL] Visualisation BDD TABLES etc
[xmlbean] Générer du code à partir d'une arborescence de schémas xsdAide pour fusionner deux tables
Problème d'alloc mémoire avec PHP et lib GD pour générer des images"Generer" des Users uniques [Noob]
[SQL] Double compte sur 2 tables en 1 requete [résolu][Symfony] Form hidden
Variables dynamiques à partir de PHP 7[MySQL] Plusieurs tables ou une seule grosse dans ce cas?
Plus de sujets relatifs à : Générer des tables dynamiques avec Doctrine Symfony 4.4.3


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR