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érer des modèles après ajout de nouvelles tables à la base de données existante [1.x]


Sujet :

Symfony PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 27
    Points : 13
    Points
    13
    Par défaut Générer des modèles après ajout de nouvelles tables à la base de données existante
    Bonjour,
    Je veux faire un truc apparemment simple, mais etant nouveau a symfony, je ne sais vraiment comment y arriver. Mon probleme est le suivant. J'ai ajoute de nouvelles tables a la base de donnee existante. Je dois maintenant generer des models pour les nouvelles tables crees. Voila, J'ignore les etapes que je dois suivre, et surtout comment le faire sans perdre des donnees.
    Merci pour aide.

  2. #2
    Membre actif Avatar de polkduran
    Profil pro
    Consultant informatique
    Inscrit en
    Décembre 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2009
    Messages : 155
    Points : 275
    Points
    275
    Par défaut
    bonjour,
    quel ORM tu utilises (Propel, Doctrine) ?

    indépendamment de ça, la méthode est similaire :
    pour construire le model Symfony utilise un schéma qui correspond à la structure de ta bdd (généralement en yml)
    pour générer ton schéma de données tu fais (avec propel)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ symfony propel:build-schema
    ensuite tu peux générer ton model
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ symfony propel:build-model
    et voilà

    En doctrine par contre il est recommandé de revoir le schéma après le build-schema ou de le faire carrément à la main

  3. #3
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    Ce n'est peut-être pas aussi simple.

    Tous dépend de l'avancée de ton projet.

    Si tu en es à la version de développement et qu'il n'y a pas de version en production, la réponse ci-dessus est parfaite.

    Si non, dis le, et je te donnerais plus d'informations. Pense à décrire précisément l'état des différentes applications et leurs versions.
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 27
    Points : 13
    Points
    13
    Par défaut
    L'application est deja en production et elle a ete developee avec symfony 1.0.7.
    Merci

  5. #5
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    Donc j'en déduis que la nouvelle version tourne sur la 1.3, que l'ORM est Propel.

    Le problème est que j'ai abandonné propel à la sortie de la 1.1 pour passer à Doctrine.


    L'idée.

    Laisse pour l'instant la version de production tranquille.

    Sur ton poste, tu vas installer la base (la structure au moins dans un premier temps) de l'ancienne version. Par contre, tu vas "l'attaquer" avec la nouvelle version et surtout le shema.yml de la nouvelle version.

    Tu vas utiliser la commande propel:generate-migration qui va créer un fichier de commande propel de modification de la structure de la base, en fait, il va générer deux fichiers, un pour passer de la vielle version à la nouvelle, un pour passer de la nouvelle à la vielle. Ces fichiers sont peut-être un peu "brute de fonderie", il conviendra de les lire attentivement et, peut-être, de les compléter pour renseigner les nouveaux champs à partir des données existantes. Idem pour la version download, quoique, si le produit est utilisé uniquement en interne, on puisse, peut-être, s'en passer.

    C'est le moment de tester le fichier de migration sur la base de test et de faire passer, si cela existe et si c'est possible sur les données migrées, les fichier de tests.

    Ensuite, il faut sur un autre poste (pas celui de production !) ou dans un deuxième environnement de ton poste de développement, rapatrier l'ancienne application, avec toute la base de données, s'assurer qu'elle est fonctionnel en local (l'idéal serait d'avoir une configuration très similaire à celle de production, même version d'OS, même version de PHP, du moteur de base de donnée, d'accélérateur,...). Sur cette instance de test, on va installer la nouvelle application et passer le fichier de migration sur la base de données complète. Il faut maintenant soigneusement tester la nouvelle application avec les données réel, la faire essayer par un panel représentatif des différents personas que vous avez définis pour votre application. Tant que cette étape ne donne pas entière satisfaction, il faut reprendre le travail.

    Une fois que l'on est assuré que de l'ancienne base à la nouvelle, le fichier de migration (et les nouvelles fonctionnalités) sont satisfaisantes, il reste à sauvegarder précautionneusement l'ancienne application et toutes ces données pour pouvoir la restaurer, au cas où, puis à appliquer les mêmes manipulations que celle utilisées dans l'étape intermédiaire. La réalisation d'un synopsis très précis des manipulations à effectuées pour l'installation sera un plus très appréciable.
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  6. #6
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 27
    Points : 13
    Points
    13
    Par défaut
    J'ai finalement trouve la solution aujourd'hui. Voici les causes du probleme les solutions (dans mon cas):
    - Probleme d'accces d'ecriture dans certains fichiers/dossiers: Resolu par la commande sudo
    symfony fix-perms
    - Access denied to the database: les url's de connexion a la base de donnees ont ete mal definis dans le /config/propel.ini. Je les ai redefini sous la forme:
    propel.database.createUrl = mysql://login:passwd@localhost
    propel.database.url = mysql://login:passwd@localhost/blog
    J'avais aussi eu un autre message d'erreur du genre, "array has been passed to the function ... instead of string". C'etait du au fait que mon repertoire /config contenait plus d'un fichier *schema.yaml.

    Je rappelle que j'utilise symfony 1.0.7 sous linux.
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Générer des variables Kettle à partir d'une table
    Par FBSVG dans le forum kettle/PDI
    Réponses: 10
    Dernier message: 17/07/2009, 16h07
  2. JTable. largeur des colonnes apres MAJ de la table
    Par step31 dans le forum Composants
    Réponses: 4
    Dernier message: 17/09/2008, 18h57
  3. Réponses: 39
    Dernier message: 12/07/2007, 14h16
  4. Placer des index après création d'une table
    Par defluc dans le forum Outils
    Réponses: 4
    Dernier message: 03/07/2007, 19h55

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