IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Génération des tables dynamiques avec Doctrine Symfony


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2020
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2020
    Messages : 1
    Par défaut Génération des tables dynamiques avec Doctrine Symfony
    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 !

    Mon script ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // script pour créer une table
    public function createTable($entity, $month_year)
    {    
        $metaData = $this->em->getClassMetadata($entity);  
        $metaData->setPrimaryTable(['name' => $metaData->getTableName() .'_'. $month_year]);   
        $schemaTool = new \Doctrine\ORM\Tools\SchemaTool($this->em);   
        $schemaTool->createSchema([$metaData]);
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $productions = $this-em->getRepository(Production::class)->findAll();
     
    foreach ($productions as $production) {   
        $productionDate = $production['dateProduction'];
        $date = $productionDate->format('m_Y');
     
        if ($this->em->getConnection()->getSchemaManager()->tablesExist(['production_'  . $date]) === false) {          
            $this->createTable(Production::class, $date);         
        }
    }
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    // L'entité Production
     
    namespace App\Entity;
     
    use Doctrine\ORM\Mapping as ORM;
     
    /**
    * Production 
    *
    * @ORM\Table(name="production")
    * @ORM\Entity
    *
     
    class Production 
    {
     
    /**     
    * @var int
    *
    * @ORM\Column(name="id", type="integer", nullable=false)
    * @ORM\Id
    * @ORM\GeneratedValue(strategy="IDENTITY")
    */   
    private $id;    
     
    /**
    * @var string
    *
    * @ORM\Column(name="name", type="string", length=2, nullable=false)     
    */
    private $name;    
     
    /**
    * @var datetime     
    *
    * @ORM\Column(name="date_production", type="datetime", nullable=false)     
    */
    private $dateProduction;
     
    // ........... getters and setters
     
    }

  2. #2
    Membre chevronné Avatar de ma5t3r
    Homme Profil pro
    Développeur freelance
    Inscrit en
    Mai 2015
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2015
    Messages : 320
    Par défaut mal lu la question
    C'est automatique avec Doctrine je ne vois pas ce que tu essaies de faire manuellement.

    https://symfony.com/doc/master/bundl...dle/index.html

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/12/2015, 14h21
  2. Problem avec doctrine et génération des tables
    Par escaflowne dans le forum ORM
    Réponses: 1
    Dernier message: 08/07/2010, 11h07
  3. Procédure Stockée pour créer des TABLE dynamiquement
    Par GuyverZ dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 12/05/2009, 22h29
  4. Utilisation des formulaires dynamiques avec struts
    Par nabdelghafour dans le forum Struts 1
    Réponses: 1
    Dernier message: 30/03/2007, 11h58
  5. Réponses: 2
    Dernier message: 17/11/2006, 07h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo