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 :

Unknown record property / related component while loading fixtures


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
    Juillet 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 13
    Par défaut Unknown record property / related component while loading fixtures
    Bonjour à tous,

    J'ai installé ce matin sfDoctrineGuardPlugin pour la gestion des utilisateurs au sein de mon application. Pour cela, j'ai suivi le README disponible sur http://www.symfony-project.org/plugi...ineGuardPlugin. J'ai ensuite voulu recharger mes fixtures personnelles mais voici ce que je recois :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ ./symfony doctrine:data-load data/fixtures/fixtures.yml
    >> doctrine  Loading data fixtures from "data/fixtures/fixtures.yml"
     
     
      Unknown record property / related component "id" on "BookReader"
    Ca me bloque depuis ce matin, car je n'ai pas envie de remplir à la main ma BDD. Ca reste raisonnable pour le moment, mais ça ne le sera plus à l'avenir. A préciser que mon fichier fixtures.yml était fonctionnel avant cela :

    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
    Book:
      first:
        serial: aqw12zsx
      second:
        serial: zsx23edc
      third:
        serial: edc34rfv
     
    Reader:
      first:
        serial: wqa12xsz
        Books: [ first, second ]
      second:
        serial: xsz23cde
        Books: [ first, second, third ]
      third:
        serial: cde34vfr
        Books: [ first, third ]
    Avec comme schema.yml :

    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
    Book:
      tableName: book
      actAs:
        Timestampable: ~
      columns:
        serial: { type: string(20), notnull: true, unique: true }
     
    Reader:
      tableName: reader
      actAs:
        Timestampable: ~
      columns:
        serial: { type: string(20), notnull: true, unique: true }
      relations:
        Books:
          class: Book
          refClass: BookReader
          local: id
          foreign: book_id
          foreignAlias: Readers
     
    BookReader:
      tableName: book_reader
      actAs:
        Timestampable: ~
      options:
        symfony:    { form: false, filter: false }
      columns:
        book_id:    { type: integer, primary: true }
        reader_id:  { type: integer, primary: true }
      relations:
        Book:       { local: book_id, foreign: id, foreignAlias: BookReaders }
        Reader:     { local: reader_id, foreign: id, foreignAlias: BookReaders }
    Assez déçu de constater qu'il n'y a pas un tutoriel plus complet, clair, et précis sur le sujet, alors que ce plugin semble être une des fondations d'un projet symfony J'ai eu beau chercher sur Google. Quelqu'un connaitrait-il un tutoriel plus explicite que ce simple README ?

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 396
    Par défaut
    Bonjour,

    Tout d'abord, je ne vois pas le rapport avec sfDoctrineGuardPlugin : tu ne manipules ici que des objets Doctrine que tu as toi-même définis.

    Il semblerait plutôt que ce soit purement un problème Doctrine.
    J'ai regardé ton schema et il n'y a rien qui me choque (pour les relations n-n, il semble respecter les spécifications : cf. relations Many to Many

    Par contre, une chose peu recommandable : tu nommes tes fixtures de la même façon d'une classe à une autre (first, second, third).
    Je te conseillerai de donner des noms uniques (à la rigueur : firstBook, firstReader, secondBook, secondReader) afin d'éviter toute source potentielle de bug.

    Si ça ne marche toujours pas après ça, je continuerais d'étudier ton problème, car pour le moment je ne vois pas d'explication claire.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 13
    Par défaut
    Effectivement, aucun rapport avec le plugin Doctrine ! J'ai juste tiré cette conclusion attive car j'ai remarqué cette erreur à la suite de l'installation de ce dernier. Mais un retour via Time Machine ni à rien changer, donc on peut mettre hors de cause sfDoctrineGuardPlugin.

    Ta remarque était pertinente. J'ai donc changer les noms des clés dans mes fixtures. Je pense que c'est une bonne habitude à adopter. Malgré tout, ça n'a pas résolu mon problème.

    Je parcoure le web à la recherche d'une explication, mais jusque là, pas de réponse concluante. Ce que je n'explique pas, c'est que j'avais déjà réussi à charger ces données auparavant.. On dirait que le comportement de Symfony ou Doctrine est changeant dans le temps.

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 396
    Par défaut
    Bon, je viens de tester chez moi, et en fait il faut que tu retires les deux lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Reader:
      tableName: reader
      actAs:
        Timestampable: ~
      columns:
        serial: { type: string(20), notnull: true, unique: true }
      relations:
        Books:
          class: Book
          refClass: BookReader
          #local: id
          #foreign: book_id
          foreignAlias: Readers
    ... bien que je ne sache pas exactement pourquoi

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 13
    Par défaut
    Alors là.. J'aimerais vraiment bien en connaitre la raison !!

    Voyons le côté positif des choses, tu viens de me sauver d'une prise de tête qui a durée 3h ! Thanks a lot !

  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
    Et je suis passé devant en disant qu'il était bon... désolé

    Tu es dans le cadre particulier de la définition d'une relation n-n. C'est le seul cas où il y a trois relation à mettre en place, deux classiques 1-n entre les tables "normales" et la table de liaison. Et un "raccourcis" qui va utiliser la classe de liaison pour récupérer les données.

    La définition de qui est lié à quoi est dans le refClass. Et il ne faut pas d'autres informations que le class, le foreinAlias et le nom de la relation qui permetent de définir les paramètres indispensables.

    Les données local: id et foreign: book_id sont hors de propos vu que la liaison se fait entre les table book et reader en "shuntant" la table de liaison. Et il n'y a pas de book_id dans la table reader...

    CQFD.

    Et désolé de ne pas l'avoir vu à la première lecture.

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 396
    Par défaut
    Impardonnable Michel Rotta !!

    Ceci dit :
    Et il n'y a pas de book_id dans la table reader...
    cela n'explique pas le message d'erreur qui porte sur BookReader et "id" ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Unknown record property / related component "id" on "BookReader"

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 13
    Par défaut
    Citation Envoyé par Michel Rotta Voir le message
    Tu es dans le cadre particulier de la définition d'une relation n-n. C'est le seul cas où il y a trois relation à mettre en place, deux classiques 1-n entre les tables "normales" et la table de liaison. Et un "raccourcis" qui va utiliser la classe de liaison pour récupérer les données.

    La définition de qui est lié à quoi est dans le refClass. Et il ne faut pas d'autres informations que le class, le foreinAlias et le nom de la relation qui permetent de définir les paramètres indispensables.
    Si je comprends bien, il y a trois relations qui découlent du schéma:
    - une relation 1-n de Book vers Reader (définie "habilement" dans BookReader),
    - une relation 1-n de Reader vers Book (définie "habilement" dans BookReader),
    - la relation n-n "complète" (via le refClass définie dans Reader (qui aurait pu aussi se retrouver dans Book?)).

    Et de ces trois relations, la relation n-n existe. Est-ce bien cela ?

    Citation Envoyé par Michel Rotta Voir le message
    Et désolé de ne pas l'avoir vu à la première lecture.
    Pas de problèmes. Déjà bien gentil d'être sur tous les fronts pour aider de pauvres galériens comme moi Tu devrais ouvrir un blog avec une série de tutoriels sur différents sujets clés d'un développement sous Symfony, ça remporterait un grand succès, j'en suis sûr ! Car la documentation sur sfDoctrineGuardPlugin et sfFork[...] est assez pauvre j'ai l'impression. Ca tombe de nulle part, sans grandes explications :S

Discussions similaires

  1. [1.x] Unknown record property / related component "tel1" on "Personne"
    Par lcloatre85 dans le forum Symfony
    Réponses: 9
    Dernier message: 26/07/2012, 16h59
  2. [1.x] Unknown record property "permissions" on "sfGuardUser"
    Par Colmea dans le forum Symfony
    Réponses: 12
    Dernier message: 29/06/2011, 11h27
  3. [1.x] Erreur Symfony "Unknown record property / related component"
    Par Tyra3l dans le forum Symfony
    Réponses: 1
    Dernier message: 04/06/2011, 14h55
  4. [sfGuard] Unknown record property lors d'un data-load
    Par Nanocom dans le forum Plugins
    Réponses: 5
    Dernier message: 05/05/2011, 14h15
  5. [1.x] Unknown record / property component "category" on "article"
    Par etoileweb dans le forum Symfony
    Réponses: 9
    Dernier message: 17/10/2010, 13h26

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