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 :

Les entités (tables) sous Symfony 2


Sujet :

Symfony PHP

  1. #1
    Membre averti Avatar de roster
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 397
    Points : 426
    Points
    426
    Par défaut Les entités (tables) sous Symfony 2
    Bonjour,

    Je n'arrive pas à générer les entités depuis la console windows sous la version PR5.

    Pour résumer: {depuis le prompt principal sandbox}
    - je crée un bundle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php app/console init:bundle Application\MyBundle
    Cette commande fonctionne, mon bundle est créé dans le répertoire 'sandbox\src\Application\MyBundle'.

    -je créé ensuite un répertoire Entity dans le rep MyBundle. J'y ajoute le fichier Actor.php

    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
    <?php
    //path => C:\wamp\www\sandbox\src\Application\MyBundle\Entity\Actor.php
    <?php
    namespace Application\MyBundle\Entity;
     
    /**
     * @orm:Entity
     */
     
    class Actor
    {
        /**
         * @orm:Id
         * @orm:Column(type="integer")
         * @orm:GeneratedValue(strategy="IDENTITY")
         *
         */
        protected $id;
     
        /**
         * @orm:Column(type="string", length="255")
         *
         */
        protected $firstname;
     
        /**
         * @orm:Column(type="string", length="255", nullable=false)
         *
         */
        protected $lastname;
     
        /**
         * @orm:Column(type="integer")
         *
         */
        protected $birth_year ;
     
    }
    -enfin, j'essais de créer les setters/getters pour cette classe avec la commande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php app/console doctrine:generate:entities
    Mais rien ne se passe, aucun message d'erreur.

    J'ai essayé avec les différentes options:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php app/console doctrine:generate:entities --bundle="Application\MyBundle"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php app/console doctrine:generate:entities --bundle="Application\MyBundle" --entity="Actor"
    J'ai essayé également en jouant sur les paths du bundle et de l'entity ou en supprimant les apostrophes, mais toujours pour un résultat semblable, ma classe Actor n'est jamais modifiée.

    La commande suivante affiche le message comme quoi l'entité a bien était générée, mais la classe Actor n'est toujours pas modifiée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php app/console doctrine:generate:entity "Application\MyBundle" "Actor"
    Un fichier "Application.ElaoBundle.Entity.Actor.dcm.xml" est bien crée dans "C:\wamp\www\sandbox\src\Application\MyBundle\Resources\config\doctrine\metadata\orm", mais à partir de là je bloque.

    D'où ma question:
    Quelle est la commande exacte dans mon exemple pour générer les entités de classes sous windows pour la version PR5?

    Merci à vous.

  2. #2
    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
    Je fais les mêmes essais, mais depuis un fichier yml.

    Bon, c'est pas encore gagné.

    Le premier qui trouve gagne un an d'abonnement au magazine de DVP. Quoi, c'est gratuit ! Pas de chance
    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 !

  3. #3
    Membre averti Avatar de roster
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 397
    Points : 426
    Points
    426
    Par défaut
    Les commandes utilisées sont en tout cas celles fournies par la doc.

    Le problème vient visiblement de getDoctrineEntityManagers() appelé depuis getBundleMetadatas qui chez moi est toujours null.

    Du coups, la condition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    //C:\wamp\www\sandbox\src\vendor\symfony\src\Symfony\Bundle\DoctrineBundle\Command\GenerateEntitiesDoctrineCommand.php
     
    if ($metadatas = $this->getBundleMetadatas($bundle)) {...}
    n'est jamais remplie.

    Je ne sais pas exactement à quoi correspond un EntityManager, j'ai donc beaucoup de mal à voir où se situe exactement le problème.

    J'ai partiellement modifié les replace pour les paths comme suggéré sur le web, mais cela n'a rien changé:
    http://osdir.com/ml/symfony-users/2011-01/msg00085.html



    PS:Entre parenthèse, je n'arrive toujours pas à configurer correctement xdebug pour faire fonctionner les points d'arrêts sous Netbeans6.9.1 en php 5.3.5, donc pas terrible pour le debuggage.

  4. #4
    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
    Pas de bonnes nouvelles,

    J'ai travaillé sur Twig cette après-midi, le base peut-être demain.

    As-tu bien la toute dernière version de la 2 ?

    Pour xdebug, je ne suis jamais arrivé à connecter netbeans (ou eclipse, ou phpedit) je me contente d'avoir plus d'informations dans les écrans d'erreur. C'est sur qu'avec des points d'arrêt, comprendre du php 5.3 objet et namespace doit être plus simple. Peut-être
    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 !

  5. #5
    Membre averti Avatar de roster
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 397
    Points : 426
    Points
    426
    Par défaut
    Bonjour,
    J'ai mis-à-jour les vendors, il y a eu quelques changements comme la création des ressources qui fonctionne mais je n'arrive toujours pas à obtenir le résultat escompté.
    Comme je ne sais pas trop s'il s'agit d'un soucis au niveau de ma méthodologie, symfony ou doctrine, je mets ce problème de coté en attendant vu que j'ai pas mal d'autre chose à voir.{Twig, par exemple}

    Je laisse ce topic ouvert, sait-on jamais...

  6. #6
    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
    Je confirme pour les choses a voir sur Twigs, mais là, cela semble bien marcher, même s'il faut prendre de nouvelles habitudes.

    Par contre, as-tu testé avec un fichier en yaml pour la création de la base ?

    Dans les choses a découvrir aussi : tout le système intégré de gestion de la sécurité. Une belle usine (pas encore de qualificatif) mais loin d'être simple à mettre en œuvre.
    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 !

  7. #7
    Membre averti Avatar de roster
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 397
    Points : 426
    Points
    426
    Par défaut
    Pour le fichier yaml, la commande generate:schema me renvoit l'erreur:
    "No metadata classes to process"

    Lors de la création de la base avec database:create, la base est créée, mais aucune table n'est ajoutée.

    J'ai essayé de modifier les annotations @foo en @orm:foo dans le fichier php généré après un generate:entity --mapping-type="annotation" {...} mais sans plus de succès.

  8. #8
    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
    En principe ça doit fonctionner avant vendredi prochain... Je m'y attaque lundi (ou dimanche si je le sens bien )

    Je reviens ici dés que j'ai quelque chose.
    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 !

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    383
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 383
    Points : 658
    Points
    658
    Par défaut
    Coucou

    Voici un article qui vous aidera peut être
    http://gilsrc.wordpress.com/2010/09/...rent-symfony2/

    Cédric!
    Un petit si la réponse convient. Merci.

  10. #10
    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
    C'est une base intéressante.

    A priori les nouveautés et modifications sont importantes entre la PR3 et le PR5 actuel. Les trois formats seraient supporté pour la description des tables (faut vraiment que je teste).

    Par contre, j'ai lu qu'il est possible dans les entités de configurer le système de validation en utilisant les commentaires, ce qui rendraient les deux autres méthodes moins intéressante. La validation d'un formulaire faisant alors, par défaut, appel à ce qui est défini dans l’entité. Une bonne chose vu qu'un champ utilisé dans 3 form différent ne devra être décrit qu'une fois.

    Autre chose, le système de gestion des CSS et fichiers javascript qui permettait depuis un contrôleur ou un template de préciser les fichiers a charger à été, temporairement, retiré vu qu'il semblait manquer cruellement de fiabilité. Conséquence c'est pas simple sans ! mais on s'en sort avec twig et les block, plus ou moins. C'est pour les bundel "plugins" que cela va être difficilement gérable. Un autre système arrive. Mais il ne sert à rien de s’exciter sur la variable "javascript" dans Twig, elle est muette.
    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 !

  11. #11
    Membre averti Avatar de roster
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 397
    Points : 426
    Points
    426
    Par défaut
    Précisions très intéressantes, merci!

    As-tu un lien concernant les modifications de la gestion des css/javascript?

  12. #12
    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
    Je n'ai pas gardé. C'est dans un message dans une mailling list je crois. Il fessait référence à une note sur le blog de Fabien P. et il confirmait mes déductions à l'analyse du code source.
    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 !

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    383
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 383
    Points : 658
    Points
    658
    Par défaut
    Je ne sais si c'est toujours d'actualité.
    Je viens à l'instant de prendre ta classe "Actor" dans mon HelloBundle.

    Je lance la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php app/console doctrine:generate:entities
    Et ceci m'affiche:
    Generating entities for "Application\HelloBundle\HelloBundle"
    > generating Application\HelloBundle\Entity\Actor
    Une question me passe par la tête; est ce que tu as bien ajouté la ligne suivante à "registerBundles" dans le kernel?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new Application\MyBundle\MyBundle(),
    Un petit si la réponse convient. Merci.

  14. #14
    Membre averti Avatar de roster
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 397
    Points : 426
    Points
    426
    Par défaut
    Oui, cela est toujours d'actualité.

    J'enregistre bien mon bundle dans l'appKernel.

    En réessayant avec la toute dernière version de la sandbox dispo, je n'arrive toujours pas à générer des entités.

    En ajoutant la classe actor dans le rep HelloBundle\Entity, puis en lançant la commande de generate:entities, rien ne se passe.

    Pour arriver au résultat que tu obtiens, modifies-tu le fichier config.yml ou autre?

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    383
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 383
    Points : 658
    Points
    658
    Par défaut
    Voici, peut être le mappings hellobundle que tu n'as pas?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    doctrine.orm:
        auto_generate_proxy_classes: %kernel.debug%
        entity_manager:
            default:
                connection: default
        mappings:
            HelloBundle: ~
    ps: si tu te ramènes sur http://chat.developpez.com/ ; on peut voir ça en live et mettre la solution après!

    Ici, je testes Doctrine Migrations... encore un peu de mal.
    Un petit si la réponse convient. Merci.

  16. #16
    Membre averti Avatar de roster
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 397
    Points : 426
    Points
    426
    Par défaut
    J'ai bien mis le mapping.

    Disons que je regarderai demain tout cela plus en détail et à tête reposée.

    Merci à toi en tout cas!

    PS: à la limite si tu pouvais uploadé ton projet pour que je puisse déjà voir si cela passe chez moi, cela serait sympa.

  17. #17
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    383
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 383
    Points : 658
    Points
    658
    Par défaut
    J'ai mis ta classe dans la sandbox, tout simplement! Tu as bien la derniere version? J'ai pompé celle du site (je n'utilise pas git).
    Je regarde pour uploader cela au boulot demain... ici je n'ai plus aucun hébergement. J'en cherche un PHP5.3 mais on dirait qu'il n'y a que ovh qui fait ca! Les Symfony-gourou devrait botter les fesses des hébergeurs!
    Un petit si la réponse convient. Merci.

  18. #18
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    383
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 383
    Points : 658
    Points
    658
    Par défaut
    Voilà, je suis de retour.
    Je t'ai zippé ca! Tu dois juste ajouter le contenu de src/vendor; sinon c'était trop gros. Pour info, j'utilise sandbox_2_0_PR5.zip

    Donc en gros, voici ce qui marche chez moi:

    1. Première étape: Je génère les "metadata" à partir d'une DB existante. J'ai fait le test avec PHP, XML ou YAML. Cette étape est facultative.
      Par default; en XML :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      D:\apache2\DATA\Symfony2>php app/console doctrine:mapping:import "Application\HelloBundle"
      Importing mapping information from "default" entity manager
        > writing D:\apache2\DATA\Symfony2\src\Application/HelloBundle/Resources/config/doctrine/metadata/orm/Application.HelloBundle.Entity.Users.dcm.xml
      Et la même chose avec php ou yml :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      D:\apache2\DATA\Symfony2>php app/console doctrine:mapping:import "Application\HelloBundle" yaml
      Importing mapping information from "default" entity manager
        > writing D:\apache2\DATA\Symfony2\src\Application/HelloBundle/Resources/config/doctrine/metadata/orm/Application.HelloBundle.Entity.Users.dcm.yml
       
      D:\apache2\DATA\Symfony2>php app/console doctrine:mapping:import "Application\HelloBundle" php
      Importing mapping information from "default" entity manager
        > writing D:\apache2\DATA\Symfony2\src\Application/HelloBundle/Resources/config/doctrine/metadata/orm/Application.HelloBundle.Entity.Users.dcm.php
      Je trouve juste dommage qu'il n'est pas possible de spécifier dans l'import de la database quelle table je veux mettre dans ce bundle la!
    2. Deuxième étape: Génération des entités
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      D:\apache2\DATA\Symfony2>php app/console doctrine:generate:entities
      Generating entities for "Application\HelloBundle\HelloBundle"
        > generating Application\HelloBundle\Entity\Users


    Voilà!
    Fichiers attachés Fichiers attachés
    Un petit si la réponse convient. Merci.

  19. #19
    Membre averti Avatar de roster
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 397
    Points : 426
    Points
    426
    Par défaut
    Excellent, çà marche!

    J'ai réinstallé complètement la sandbox, lancé le mapping et les entités se sont parfaitement générées.
    C'est au niveau du mapping que j'avais un soucis.

    Un grand merci à vous deux!

  20. #20
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    383
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 383
    Points : 658
    Points
    658
    Par défaut
    Chouette
    Un petit si la réponse convient. Merci.

Discussions similaires

  1. problème de bordure avec les tables sous IE
    Par Silvia12 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 28/09/2007, 10h45
  2. Réponses: 2
    Dernier message: 23/07/2007, 14h12
  3. Réponses: 18
    Dernier message: 11/07/2007, 17h38
  4. Réponses: 5
    Dernier message: 10/07/2007, 09h43
  5. pb sur les tables sous oracle
    Par pepsister dans le forum Administration
    Réponses: 6
    Dernier message: 09/11/2006, 21h56

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