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 :

propriété d'une classe non alimentée


Sujet :

Symfony PHP

  1. #1
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 126
    Points : 105
    Points
    105
    Par défaut propriété d'une classe non alimentée
    Bonjour,

    J'ai un truc très bizarre (mais je suis très fatigué).. j'ai 1 table événement et 1 table user, un user est lié à un événement.

    Je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $repository = $this->getDoctrine()->getManager()->getRepository('AppBundle:Evenement');
    $evt = $repository->findOneById($evt);
    dump($evt)
    Pas de souci je récupère bien mon événement, par contre quand je clique sur l'user qui lui est lié dans le dump quasiment toutes les zones sont null sauf l'id, le mail, l'username (je fonctionne avec fos_user_bundle), idem si je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dump($evt->getSuperviseur());
    Ce que je ne comprends pas c'est pourquoi certaines sont bien alimentées et d'autres pas.

    Mon vrai problème c'est que j'ai d'autres tables liées (qui ne sont pas fosuserbundle) ou là tout est à null sauf l'ID (alors que bien renseignée dans la BDD)

    Merci

  2. #2
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    1)
    pour User de fos user tu dois avoir ces champs qui doivent être obligatoirement renseigné :
    id username email password salt enabled

    les autres champs peuvent être à null ou 0, cela dépend de l'utilisation.

    2)
    tes tables en base de données sont propres ? pas d'anciens enregistrements erronés qui traînent ? etc ....

  3. #3
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 126
    Points : 105
    Points
    105
    Par défaut
    Oui la bdd est propre, et ça me le fait avec toutes les classes (sauf fosuserbundle où j'ai les zones obligatoires de renseignés) et je n'avais pas remarqué ça avant..
    Je vais essayer de charger une ancienne version de mon site et retester (vive git)

  4. #4
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    en précisant en dure l'id, ça donne quoi ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ...->findOneById(1);

  5. #5
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 126
    Points : 105
    Points
    105
    Par défaut
    J'ai remonté une sauvegarde et ça me le faisait déjà (donc c'est pas un probleme de version ou de modif que j'aurai fait)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            $repository = $this->getDoctrine()->getManager()->getRepository('AppBundle:Evenement');
            $evenement = $repository->findOneById(7);
            dump($evenement);
            dump($evenement->getSuperviseur());
    ça me fait la même chose dans les 2 cas, toutes les zones de l'user sont null sauf l'ID.

    Il y a l'histoire du lazyloading qui ne charge pas toutes les données, mais il doit y avoir un moyen de forcer le chargement ?

    Je suis sûr que c'est un truc tout con en plus..

  6. #6
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    et bien fait voir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            dump($evenement->getSuperviseur());
    dans parametre.yml c'est bien la bonne base de donnée qui est défini ? on ne sait jamais

  7. #7
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 126
    Points : 105
    Points
    105
    Par défaut
    eheh oui sûr

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 3
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Comme cité par @Hesiode c'est surement une histoire de lazy loading.

    Doctrine va récupérer les informations de l'utilisateur lorsque tu vas tenter d’accéder à un attribut de ton objet "User".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    dump($evenement->getSuperviseur()); //ne récupère rien de la bdd, les attributs de l'objet sont à "null" sauf l'id
     
    dump($evenement->getSuperviseur()->getUsername()); //récupère les informations de l'utilisateur et retourne son username
     
    dump($evenement->getSuperviseur()); //tous les attributs devraient contenir les bonnes valeurs
    Si tu veux obtenir tout en "une requête", tu peux dans ta classe "EvenementRepository" ajouter une méthode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public function findABCDEF($id) //désolé pas inspiré pour le nom :)
    {
    	return $this->createQueryBuilder("e")
    		->select("e", "u")
    		->innerJoin("e.user", "u")
    		->where("e.id = :id")
    		->setParameter("id", $id)
    		->getQuery()
    		->getOneOrNullResult();
    }

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/06/2013, 18h07
  2. Valeur non sauvegardé: UserControl Propriété d'une classe
    Par rikidude dans le forum Windows Forms
    Réponses: 0
    Dernier message: 08/12/2009, 22h50
  3. Double propriété dans une classe
    Par Kiboumz dans le forum VB.NET
    Réponses: 3
    Dernier message: 28/03/2007, 13h49
  4. Réponses: 2
    Dernier message: 13/12/2006, 15h10
  5. Réponses: 6
    Dernier message: 31/08/2006, 14h54

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