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 :

Simple fixtures. à priori. [1.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 32
    Par défaut Simple fixtures. à priori.
    Voila mon problème:

    J'ai fais une table Rubrique avec comme colonnes: id, id_parent, nom.
    Et j'ai effectué une liaison entre id et id_parent pour supprimer les rubriques enfants en même temps que la rubrique mère l'est.
    Rubrique: { onDelete: CASCADE, local: id_parent, foreign: id }
    Tout ceci fonctionne très bien quand je test sur MySQL à condition d'initialiser la table avec une rubrique de base où id = id_parent.
    Maintenant j'aimerais remplir ma table avec un jeux de fixtures mais c'est là que ça ne fonctionne pas.

    Voila mon jeux de 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
    17
     
    Rubrique:
     base:
      nom: base
      Rubrique: base
     telephonie:
      Rubrique: base
      nom: telephonie
     informatique:
      Rubrique: base
      nom: informatique
     portable:
      Rubrique: telephonie
      nom: portable
     pda:
      Rubrique: informatique
      nom: pda
    Voila mon schema.yml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Rubrique:
      actAs: { Timestampable: ~ }
      columns:
        id_parent: { type: integer }
        nom: { type: string(255), notnull: true}
      relations:
        Rubrique: { onDelete: CASCADE, local: id_parent, foreign: id }
    Alors je signale que je suis débutant en matière de fixtures et en symfony d'ailleurs.
    Merci d'avance pour votre aide.

  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


    Peux-tu :
    • mettre ton fichier shema.yml
    • remettre ton fixature avec code autour

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 32
    Par défaut
    Je viens de m'apercevoir que le problème persistait avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Rubrique:
     base:
      id: 0
      nom: mere
      id_parent: 0
    Avec un "foreign key constraint fails", alors que manuellement dans MySQL je peux effectuer cette insertion.

  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
    Sans le fichier shéma.yml, pas de réponse envisageable.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 32
    Par défaut
    je l'ai mis. dans mon premier post, non ?

  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
    Heureusement, ma mémoire me permet encore de me rappeler d'un sujet traité dans la journée. Donc, je ne relis presque jamais les messages précédents, si je puis me permettre un conseil, quant tu modifies le message d'origine, préviens tes lecteurs de cette modification.

    Bon, a mon avis le shema est légèrement faux au niveau de la relation. Les relations dans doctrine, ne sont réellement pas simple à gérer.

    Le shema.yml tel que je le verrais (non testé)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    rubrique:
      actAs: { Timestampable: ~ }
      columns:
        id_parent: { type: integer }
        nom: { type: string(255), notnull: true}
      relations:
        parent: 
          onDelete: CASCADE
          local: id
          foreign: id_parent
          foreignAlias: rubriques
    Une relation est une liaison entre deux tables, ici c'est la même table, mais elle intervient deux fois. C'est une liaison classique 1-n. Vu que la relation a deux côtés, il y a deux nom, le nom côté où la relation est définie (ici parent) et le nom de la relation vu de l'autre table (ici rubriques). Remarque le "s" à la fin de rubrique qui signifie qu'il y a plusieurs rubriques enfant de la rubrique parent, "parent" est lui au singulier, il n'y a qu'un parent possible.

    Donc pour une rubrique : $rubrique on va retrouver ces enfants par $rubrique->getRubriques() (qui retourne toujours une collection doctrine_collection) et son parent $rubrique->getParent() (qui retourne un objet rubrique).

    Pour le fixature on va donc avoir (non 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
    17
    18
     
    Rubrique:
     base:
      nom: base
      parent: base
     # Celui-ci je l'aurai laissé vide plutôt que de risquer une boucle de la mort
     telephonie:
      parent: base
      nom: telephonie
     informatique:
      parent: base
      nom: informatique
     portable:
      parent: telephonie
      nom: portable
     pda:
      parent: informatique
      nom: pda

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 13/07/2010, 10h18
  2. Je bute sur une requête qui est, a priori, simple.
    Par WinNew dans le forum Requêtes
    Réponses: 2
    Dernier message: 10/07/2010, 12h51
  3. Réponses: 4
    Dernier message: 01/04/2010, 14h58
  4. Problème a priori simple mais qui rend fou
    Par Fav' da Boy dans le forum ActionScript 1 & ActionScript 2
    Réponses: 0
    Dernier message: 21/09/2009, 18h41
  5. Réponses: 17
    Dernier message: 16/07/2004, 12h19

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