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 :

Sauvegarder la relation produite par embedRelation [1.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de llaffont
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2007
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2007
    Messages : 702
    Par défaut Sauvegarder la relation produite par embedRelation
    Bonjour,

    Dans mon projet, je dois permettre la création de fiche d'intervention.
    Jusque là pas de problème.

    Ma fiche s'enregistre correctement avec toutes les informations necessaire.
    Pour l'instant j'ai "triché" sur une étape de mon formulaire.

    En effet dans mon formulaire j'ai deux zones différentes qui doivent enregitrer leur données dans deux tables différentes.
    J'ai "triché" en ne faisant qu'une seule table, mais il me faut aujourd'hui établir le principe convenablement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    intervention:
      actAs: [Timestampable]
      options:
        collate: utf8_unicode_ci
        charset: utf8
      columns:
        probleme : { type: string(255) }
        cause : { type: string(255) }
        solution : { type: string(255) }
        batiment : { type: string(255) }
        atelier : { type: string(255) }
        section : { type: string(255) }
    De quoi s'agit-il ?

    Mon formulaire est constitué d'un fieldset comprenant les détails de l'intervention, puis d'un second fieldset représentant la localisation.
    En découle donc une table Intervention lié a la table localisation par la valeur localisation_id.
    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
     
    intervention:
      actAs: [Timestampable]
      options:
        collate: utf8_unicode_ci
        charset: utf8
      columns:
        probleme : { type: string(255) }
        cause : { type: string(255) }
        solution : { type: string(255) }
        localisation_id : { type: integer, notnull: true }
      relations:
        localisation:     { local: localisation_id, foreign: id }
     
    localisation:
      actAs: [Timestampable]
      options:
        collate: utf8_unicode_ci
        charset: utf8
      columns:
        batiment : { type: string(255) }
        atelier : { type: string(255) }
        section : { type: string(255) }
    En creusant j'ai trouvé l'embedRelation. Je l'ai donc ajouté à mon InterventionForm.class.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $this->embedRelation('localisation');
    J'obtiens bien le resultat voulu a savoir un tableau avec mes champs définies.

    Mais je n'arrive pas à passer le validator il m'indique que ma valeur localisation_id est Required

    Je pense que j'oublie une étape mais je n'arrive pas a trouver la solution.

    Pourriez-vous m'aider ?

    Etant qu'un simple débutant en symfony et n'ayant pas une grande connaissance de la POO. Je suis largué...

  2. #2
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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
    Par défaut
    Tu as modifié la méthode configure de FormLocalisation.class.php ?

    Tu peux la mettre ?

    Dans ton schéma, la relation devrait être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      relations:
        localisation:     { local: localisation_id, foreign: id, foreignAlias: interventions }
    et si tu considères que les noms des clefs sont conformes à la norme (il le sont) tu peux l'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      relations:
        localisation:     { foreignAlias: interventions}
    ceci indique comment retrouver les interventions depuis la table localisation.

  3. #3
    Membre éclairé Avatar de llaffont
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2007
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2007
    Messages : 702
    Par défaut
    Citation Envoyé par Michel Rotta Voir le message
    Tu as modifié la méthode configure de FormLocalisation.class.php ?
    Heu ! non ! Il fallait ?

    Je vais tenter de regarder le tuto

    Je profite que tu ais évoqué les relations dans le sujet.
    J'ai ceci dans un autre test :

    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
     
     
    Maintenance:
      actAs: [Timestampable]
      options:
        collate: utf8_unicode_ci
        charset: utf8
      columns:
        Cri_id:  { type: integer, notnull: true }
        Element_id_change:  { type: integer, notnull: true }
        Element_id_installe:  { type: integer, notnull: true }
        Serial_Number_change:  { type: string(255), notnull: true }
        Serial_Number_installe:  { type: string(255), notnull: true }
      relations:
        Element:  { local: Element_id_change, foreign: id, foreignAlias: maintenance_change }
        Element:  { local: Element_id_installe, foreign: id, foreignAlias: maintenance_installe }
    Puis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Element : 
      options:
        collate: utf8_unicode_ci
        charset: utf8
      columns:
        Référence:  { type: string(255), notnull: true }
        Type:  { type: string(255), notnull: true }
        Marque:  { type: string(255), notnull: true }
    Une seule des deux relation est visible sous phpMyAdmin où est mon erreur ?

  4. #4
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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
    Par défaut
    Heu ! non ! Il fallait ?
    Non, mais cela aurait pu être une explication.


    Schéma corrigé à ma façon.
    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
     
    Maintenance:
      actAs: 
       Timestampable: ~
      options:
        collate: utf8_unicode_ci
        charset: utf8
      columns:
        Cri_id:  
         type: integer
         notnull: true
        Element_change_id:  
          type: integer
          notnull: true 
        Element_installe_id:
          type: integer
          notnull: true
        Serial_Number_change:
          type: string(255)
          notnull: true
        Serial_Number_installe:  
          type: string(255)
          notnull: true 
      relations:
        Element_change:
          class: Element
          local: Element_change_id
          foreignAlias: maintenance_changes
        Element_installe:  
          class: Element
          local: Element_installe_id
          foreignAlias: maintenance_installes
    • on ne peut avoir deux relations avec un même nom (Element), d'où l'argument class pour préciser la classe de liaison.
    • "s" à la fin des noms des liaisons inverses (foreignAlias) pour indiquer qu'elles retournent des Doctrine_Collection.

  5. #5
    Membre éclairé Avatar de llaffont
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2007
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2007
    Messages : 702
    Par défaut
    Merci pour cette correction.


    Dans le même esprit j'avais ouvert le post suivant dans les ORM. Beaucoup de consultation mais pas beaucoup d'aventurier se sentant l'âme d'un enseignant.

    exemple-simple-relation-many-many-one-many

    Si tu te sens le coeur aventurier

  6. #6
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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
    Par défaut
    Le traitement de la salle plugin passe après la racine dans mon schéma de lecture...

    C'est un cas simple, il aura une réponse

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

Discussions similaires

  1. Sauvegarde d'un objet par une session
    Par doustij dans le forum Langage
    Réponses: 4
    Dernier message: 11/03/2007, 14h02
  2. Code produit par gcc 3.2.3 / 3.4.3
    Par Neysa dans le forum x86 32-bits / 64-bits
    Réponses: 3
    Dernier message: 04/07/2006, 13h16
  3. Réponses: 2
    Dernier message: 02/06/2006, 13h10
  4. Sauvegarde problématique sous excel par OLE
    Par ulysse66x dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 16/04/2003, 21h23

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