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 :

[propel] Clés primaires [1.x]


Sujet :

Symfony PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 41
    Points : 21
    Points
    21
    Par défaut [propel] Clés primaires
    Bonjour,

    je suis nouveau dans symfony, et je dois refondre une application avec ...

    J'ai déjà la base de données, et j'aurais aimé savoir si il était gênant d'avoir des clés primaires de type :

    client.id_client

    pour fonctionner avec Propel (generate crud ... etc).

    Merci de votre aide ^^

  2. #2
    Membre éclairé
    Avatar de bricecol
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 364
    Points : 654
    Points
    654
    Par défaut
    bonjour,

    il est certain que propel reconnait automatiquement un champ "id" comme étant int/primaire/autoincrémenté (une clé primaire en fait)... et qu'il reconnait aussi un champ de type xxx_id comme étant une clé étrangère ! or dans ton cas, ton champ se nomme id_xxx, ce qui ne devrait poser aucun problème. tu devra cependant dire explicitement que id_client est la clé primaire.
    "Computers are like Old Testament gods ; Lots of rules and no mercy"
    [ Les ordinateurs sont comme les dieux de l’Ancien testament ; Beaucoup de règles et aucune pitié. ] Joseph Campbell

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 41
    Points : 21
    Points
    21
    Par défaut
    Merci de ta réponse.

    Je posais cette questions parce que j'ai tenté de générer un CRUD pour mes clients :

    -sh-3.1$ ./symfony propel-generate-crud backend clients Clients


    Et voici l'erreur renvoyée :

    PHP Parse error: syntax error, unexpected '-', expecting '{' in /home/samba/svn/mc/trunk/symfony/lib/model/map/Codes-packMapBuilder.php on line 5

    Parse error: syntax error, unexpected '-', expecting '{' in /home/samba/svn/mc/trunk/symfony/lib/model/map/Codes-packMapBuilder.php on line 5
    J'ai bien une application backend, et un module clients ... Vous avez une idée du problème ?

    merci de votre aide.

  4. #4
    Membre éclairé
    Avatar de bricecol
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 364
    Points : 654
    Points
    654
    Par défaut
    il est vrai que c'est une erreur peu commune, pour ma part en tout cas. il arrive que le système s'emmêle.

    voici ce que je propose :

    - sauvegarder les modèles perso dans un dossier tmp
    - supprimer les modèles générés et les modèles perso
    - faire un clean cache
    - régénérer les modèles et remettre les modèles perso

    l'erreur provient peut-être d'une précédente erreur ?
    "Computers are like Old Testament gods ; Lots of rules and no mercy"
    [ Les ordinateurs sont comme les dieux de l’Ancien testament ; Beaucoup de règles et aucune pitié. ] Joseph Campbell

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 41
    Points : 21
    Points
    21
    Par défaut
    J'ai testé, j'ai toujours la même réponse ...

    J'ai aussi testé l'exécution de la commande en root, pareil.

    J'ai eu des erreurs précédemment, lors de l'execution de propel-build-model, j'ai du supprimer les formats par défaut sur les champs date (fichier yml).

    Maintenant, l'erreur actuelle, je ne vois vraiment pas comment en sortir ..

    J'ai supprimé tout ce que j'avais généré avant puis j'ai fait un :
    symfony cc


    Puis j'exécute la commande, et ça ne fonctionne pas ...

    ./symfony propel-generate-crud backend clients Clients


    EDIT : je précise que je suis sur la version sf_sandbox de symfony

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 41
    Points : 21
    Points
    21
    Par défaut
    Voici ce que je viens de faire :

    supprimer les modèles
    remettre le schema.yml qui fonctionne bien

    puis :

    ./symfony propel-build-schema
    ./symfony propel-build-model

    ./symfony init-app backend_test
    ./symfony init-module backend_test clients


    Tout a fonctionné jusqu'à exécution de :

    ./symfony propel-generate-crud backend_test clients Clients


    Et là, je plante ...

    Help !

    Je dois faire une boulette, mais je n'arrive pas à savoir laquelle :s

  7. #7
    Membre éclairé
    Avatar de bricecol
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 364
    Points : 654
    Points
    654
    Par défaut
    c'est peut-être une erreur de droits, essaie "fix-perms" ?
    "Computers are like Old Testament gods ; Lots of rules and no mercy"
    [ Les ordinateurs sont comme les dieux de l’Ancien testament ; Beaucoup de règles et aucune pitié. ] Joseph Campbell

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 41
    Points : 21
    Points
    21
    Par défaut
    Je viens à l'instant d'exécuter ce script, comme tu m'as conseillé :

    ./symfony fix-perms (en root)
    ./symfony propel-generate-crud backend clients Clients (en user) me renvoie :


    PHP Parse error: syntax error, unexpected '-', expecting '{' in /home/samba/svn/mc/trunk/symfony/lib/model/map/Codes-packMapBuilder.php on line 5

    Parse error: syntax error, unexpected '-', expecting '{' in /home/samba/svn/mc/trunk/symfony/lib/model/map/Codes-packMapBuilder.php on line 5


    ./symfony propel-generate-crud backend clients Clients (en root) me renvoie :

    Parse error: syntax error, unexpected '-', expecting '{' in /home/samba/svn/mc/trunk/symfony/lib/model/map/Codes-packMapBuilder.php on line 5
    Ce qui n'est pas exactement pareil, puisque je l'ai qu'une seule fois en root.

    Pour tester, j'ai relançé un build model, au milieu, j'ai ce warning :

    [propel-om] Could not perform XLST transformation. Make sure PHP has been compiled/configured to support XSLT.
    Elle n'empêche pas la création du modèle, cela dit, puisque la commande se termine quand même.

    Je me demande si ça ne viendrait pas de ça, en fait, une extension non active ...?

  9. #9
    Membre éclairé
    Avatar de bricecol
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 364
    Points : 654
    Points
    654
    Par défaut
    c'est tt à fait plausible. cette erreur de génération viendrait d'une erreur de transformation xslt.

    pour le savoir, vérifie que le module xsl est activé sur ton php. (php.ini) et si tu peux, fait un test d'une petite transformation, même vide, voir si qqchose en sort.

    ps : normalement, quand tu fais "php /chemin/vers/symfony/data/bin/check_configuration.php", il devrait te dire si c ok pour xsl je crois, après, je ne sais pas s'il teste vraiment l'extension
    "Computers are like Old Testament gods ; Lots of rules and no mercy"
    [ Les ordinateurs sont comme les dieux de l’Ancien testament ; Beaucoup de règles et aucune pitié. ] Joseph Campbell

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 41
    Points : 21
    Points
    21
    Par défaut
    Bonjour,

    j'ai réussi à activer l'extension qui pose problème.

    Néanmoins, si le warning a disparu a la génération du modèle, je n'arrive toujours pas à générer les cruds ... (même erreur qu'avant)

    De plus, le fichier "check_configuration.php" est introuvable dans la version que j'utilise (sf_sandbox).

    Je sèche totalement là ...

    Merci de votre aide.

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 41
    Points : 21
    Points
    21
    Par défaut
    Voici ce que me renvoie le fichier de configuration :


    ********************************
    * *
    * symfony requirements check *
    * *
    ********************************

    php.ini used by PHP: /usr/local/lib/php.ini

    ** WARNING **
    * The PHP CLI can use a different php.ini file
    * than the one used with your web server.
    * If this is the case, please launch this
    * utility from your web server.
    ** WARNING **

    ** Mandatory requirements **

    OK PHP version is at least 5.2.4

    ** Optional checks **

    OK PDO is installed
    OK PDO has some drivers installed: sqlite2, sqlite
    OK PHP-XML module is installed
    OK XSL module is installed
    OK The token_get_all() function is available
    [[WARNING]] The mb_strlen() function is available: FAILED
    *** Install mb_strlen() function ***
    OK The iconv() function is available
    OK The utf8_decode() is available
    [[WARNING]] A PHP accelerator is installed: FAILED
    *** Install a PHP accelerator like APC (highly recommended) ***
    [[WARNING]] php.ini has short_open_tag set to off: FAILED
    *** Set it to off in php.ini ***
    [[WARNING]] php.ini has magic_quotes_gpc set to off: FAILED
    *** Set it to off in php.ini ***
    [[WARNING]] php.ini has register_globals set to off: FAILED
    *** Set it to off in php.ini ***
    OK php.ini has session.auto_start set to off
    OK PHP version is not 5.2.9

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 41
    Points : 21
    Points
    21
    Par défaut
    Je viens de comprendre, en ouvrant le fichier qui pose problème, que c'est le nom de la classe que php gère mal :s

    en effet, il renvoie une erreur par rapport au trait d'union de la classe : "Codes-packMapBuilder"

    Alors que c'est une classe symfony :s

    J'suis paumé ^^

  13. #13
    Membre éclairé
    Avatar de bricecol
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 364
    Points : 654
    Points
    654
    Par défaut
    ce nom ne respect effectivement pas les conventions habituelles

    change déjà cela, puis je te conseille de régler quelques warnings, ce n'est pas bien difficile, il suffit d'éditer le fichier php.ini pour la plupart où alors installer de petits packages (cela te permettra d'éviter des problèmes courants).

    pour ce qui est de symfony, je te conseille vivement d'utiliser une version exportée à partir de l'adresse : http://svn.symfony-project.com/branches/1.2. Tu disposera alors de tout le nécessaire je pense.

    j'espère que ton problème sera vite réglé :p
    "Computers are like Old Testament gods ; Lots of rules and no mercy"
    [ Les ordinateurs sont comme les dieux de l’Ancien testament ; Beaucoup de règles et aucune pitié. ] Joseph Campbell

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 41
    Points : 21
    Points
    21
    Par défaut
    Bon,

    j'ai suivi tes recommandations, mais j'ai toujours l'erreur à cause de la classe :

    Codes-packMapBuilder

    Et je ne sais pas comment corriger ça (je ne sais pas ou symfony l'appelle en fait).

    La classe est située ici :
    Projet\lib\model\map

    L'erreur renvoyée est :
    PHP Parse error: syntax error, unexpected '-', expecting '{' in /home/samba/svn/mc/trunk/paytopass/lib/model/map/Codes-packMapBuilder.php on line 20

    Parse error: syntax error, unexpected '-', expecting '{' in /home/samba/svn/mc/trunk/paytopass/lib/model/map/Codes-packMapBuilder.php on line 20
    L'idée étant que le fichier généré depuis un nom de table pose problème, finalement, quelle serait l'astuce ?

  15. #15
    Membre éclairé
    Avatar de bricecol
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 364
    Points : 654
    Points
    654
    Par défaut
    si la classe est dans lib/model/map, cela veut dire je crois que c'est propel qui la généré. donc, modifie le nom de ce modèle dans ton YAML ?

    ensuite, vire tt ce qui est généré automatiquement (dc aussi le dossier map) de ton dossier lib puis fais un "symfony cc" et régénère avec propel.

    tiens moi au courant.
    "Computers are like Old Testament gods ; Lots of rules and no mercy"
    [ Les ordinateurs sont comme les dieux de l’Ancien testament ; Beaucoup de règles et aucune pitié. ] Joseph Campbell

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 41
    Points : 21
    Points
    21
    Par défaut
    La difficulté était de modifier le nom de la table, en fait ...

    Donc, j'ai modifié le nom de ma table, qui comportait un tiret. J'ai corrigé mon fichier yml, et désormais les commandes propel fonctionnent correctement.

    Enfin, me direz vous ^^.

    Mais bon, un de réglé, un nouveau d'arrivé ...

    J'ai pu générer mon crud pour une page, la commande a correctement fonctionné.

    Quand je vais en http à l'adresse :
    http://support.monsite.moi/index.php/marchands

    ça me renvoie cette erreur :

    "
    Oops! An Error Occurred
    The server returned a "500 Internal Server Error".

    Something is broken
    Please e-mail us at [email] and let us know what you were doing when this error occurred. We will fix it as soon as possible. Sorry for any inconvenience caused."
    Une idée ^^ ?

    En tout cas, je te remercie de ton aide précieuse.

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 41
    Points : 21
    Points
    21
    Par défaut
    Ok, à priori, ça vient de ma connexion à la base de données.

    Voici mon fichier de connexion :

    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
    dev:
      propel:
        class: sfPropelDatabase
        param:
          classname: PropelPDO
          dsn: mysql://192.168.10.245/core
          username: name
          password: ****
          encoding: utf8
          persistent: true
          pooling: true
    test:
      propel:
        param:
          classname: DebugPDO
    all:
      propel:
        class: sfPropelDatabase
        param:
          classname: PropelPDO
          dsn: mysql://192.168.10.245/core
          username: name
          password: ****
          encoding: utf8
          persistent: true
          pooling: true

    Y a t-il une erreur ?

    L'erreur renvoyée par propel est :

    Unable to open PDO connection [wrapped: SQLSTATE[28000] [1045] Access denied for user 'user'@'localhost' (using password: YES)]

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 41
    Points : 21
    Points
    21
    Par défaut
    Une fois n'est pas coutume ...

    L'administrateur m'apprend que mon compte mysql était paramétré pour se connecter depuis une seule adresse.

    Une matinée de perdue ...

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

Discussions similaires

  1. Requête sur table à double clés primaires
    Par darkian dans le forum Langage SQL
    Réponses: 4
    Dernier message: 04/03/2005, 18h28
  2. [C#] Probleme sur les clés primaires composites
    Par stardeus dans le forum Windows Forms
    Réponses: 7
    Dernier message: 13/02/2005, 00h28
  3. Comment avoir 2 clés primaires dans une table
    Par Guigui_ dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 18/01/2005, 09h29
  4. [SGBDR]Clés primaires?
    Par vsavoir dans le forum Décisions SGBD
    Réponses: 7
    Dernier message: 21/11/2004, 23h48
  5. [postgresql]creer une table avec plusieurs clés primaire??
    Par perlgirl dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/11/2004, 18h24

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