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 :

Récupération de données [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre régulier
    Femme Profil pro
    Développeur Web
    Inscrit en
    Avril 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2015
    Messages : 8
    Par défaut Récupération de données
    J'ai un souci sur lequel je bloque y'a un peu plus d'une semaine et là j'en peux vraiment plus.
    Je sais qu'il s'agit d'une petite fausse manipulation de relation entre mes entités.
    Donc voilà j'ai deux entités typeflux et application

    Voici mes entités:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    class XfeApplication
    {
     
    /**
    * @ORM\OneToMany(targetEntity="stotypeflux", mappedBy="application", cascade={"remove","persist"})
    */
       private $typeflux;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    class StoTypeFlux
    {
     /**
    * @ORM\ManyToOne(targetEntity="XfeApplication", inversedBy="typeflux")
    * @ORM\JoinColumn(name="application_id",referencedColumnName="application_id")
    */
        private $application;

    quand je demande à afficher l'application attribuée au type de flux ça me met cette erreur:

    Item "ApplicationNom" for "" does not exist in TransfertsBundle::partenaire.html.twig at line 14


    Voici mon template:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     {% for typeflux in typefluxs %}  (faites pas attention aux fluxs avec S)
     
    <tr><td>  {{typeflux.application.ApplicationNom}} </td></tr>
     
    {%endfor%}


    Si quelqu'un peut m'aider svp.

  2. #2
    Membre extrêmement actif
    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
    Par défaut
    hugh! houla c'est la grosse fatigue. met des balises CODE afin que l'on puisse mieux lire ton message

  3. #3
    Membre régulier
    Femme Profil pro
    Développeur Web
    Inscrit en
    Avril 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2015
    Messages : 8
    Par défaut
    Voilà! désolée pour le bazar que j'ai causé

  4. #4
    Membre chevronné
    Avatar de phpiste
    Homme Profil pro
    Développeur Senior
    Inscrit en
    Septembre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 251
    Billets dans le blog
    7
    Par défaut Ton modele me semble correct
    Bonjour,
    Ton modele me semble correct , par contre l'attribue application dans typeflux est un ArrayCollection et ça d'après le type de relation doctrine que tu a mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     /**
    * @ORM\ManyToOne(targetEntity="XfeApplication", inversedBy="typeflux")
    * @ORM\JoinColumn(name="application_id",referencedColumnName="application_id")
    */
    private $application;
    du coups dans ton template, met une deuxiemme boucle pour parcourir les applications relatives à ce Type

    Essai avec ce bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     {% for typeflux in typefluxs %}  (faites pas attention aux fluxs avec S) #ok j'ai fais attention :D
     {% for application in typeflux.application %} 
    <tr><td>  {{application.ApplicationNom}} </td></tr>
     {%endfor%}
    {%endfor%}
    sinon moi a ta place j'ajoute un petit "s" à application pour dire que c'est pluisieurs et enlever l'ambiguité

  5. #5
    Membre régulier
    Femme Profil pro
    Développeur Web
    Inscrit en
    Avril 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2015
    Messages : 8
    Par défaut
    Merci phpiste de me répondre.

    Justement je peux pas mettre application avec S tout simplement parce qu'un typeflux n'a qu'une seule application qui lui est associée.
    Et pour ce qui est de ce que tu m'as envoyé premièrement le fait d'écrire typeflux.application in.... me renvoie une erreur :
    Unexpected token "punctuation" of value "." ("operator" expected with value "in") in TransfertsBundle::partenaire.html.twig at line 10

    Et j'ai aussi essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {% for application in typeflux.application %}
    sauf que d'après ce que j'ai compris on ne peut boucler sur application vu qu'il n'y a qu'une seule.

    Le problème c’est que j'arrive pas a accéder a mon entité application a partir de l'entité typeflux

    j'ai essayé aussi le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     {% for typeflux in typefluxs %}  (faites pas attention aux fluxs avec S) #ok j'ai fais attention :D
     {% for application in typeflux.application %} 
    <tr><td>  {{application.ApplicationNom}} </td></tr>
     {%endfor%}
    {%endfor%}
    ça me renvoi des résultats vides

  6. #6
    Membre chevronné
    Avatar de phpiste
    Homme Profil pro
    Développeur Senior
    Inscrit en
    Septembre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 251
    Billets dans le blog
    7
    Par défaut
    Coté base de données, y'a t'il des applications associé à ton Type ?

    peut tu faire un dump de la variable typeflux directement dans ton twig ?

    attention l'extension twig de debug doit être activé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #app/config/config.yml
    services:
        debug.twig.extension:
            class: Twig_Extensions_Extension_Debug
            tags: [{ name: 'twig.extension' }]

  7. #7
    Membre régulier
    Femme Profil pro
    Développeur Web
    Inscrit en
    Avril 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2015
    Messages : 8
    Par défaut
    Oui. Dans ma base j'ai des applications associées aux types de flux

    J'ai dumpé le typeflux ça me récupère l'application mais ça ne l'affiche pas en fait même quand je demande à afficher n'importe quoi dans la boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {%for application in typeflux.application%}
    ça met pas d'erreur mais ça n'affiche rien du tout c'est comme si ça rentrait pas dans la boucle sauf que quand je dump je récupéré bel et bien l'application associée au typeflux

    c'est un peu bizarre ce qui se passe parce que quand je demande d'afficher dans l'autre sens par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {%for typeflux in application.typeflux %}
    ça me renvoi les applications associées au typeflux sauf que ce sens là ne m'arrange pas avec ce que je dois faire à base c'est pourquoi ma seule solution est de passer de typeflux à application

  8. #8
    Membre Expert Avatar de Nico_F
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Par défaut
    Debugger dans ton contrôleur devrait être plus simple pour commencer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    \Doctrine\Common\Util\Debug::dump($fluxes); // la collection de flux que tu balances à ton template
    Si j'ai bien tout compris : la relation avec Application a un souci donc tu devrais voir un objet null dans l'attribut 'application' de chaque objet Flux.

    Si c'est bien ça le problème vérifie la manière dont tu récupères ces flux.
    Est-ce que tu passes par un findAll() classique, est-ce que tu utilises une méthode de repository custom ?

    Si tu fais une méthode custom : as-tu bien pensé à mettre l'alias de l'application dans le select ? Ça pourrait expliquer pourquoi la jointure ne se fait pas. Théoriquement Doctrine est censé faire marcher le lazy loading mais si pour une raison que nous ignorons, il ne le fait pas, ça peut-être la source de ton problème.

  9. #9
    Membre régulier
    Femme Profil pro
    Développeur Web
    Inscrit en
    Avril 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2015
    Messages : 8
    Par défaut
    Bonjour Nico_F,
    J'ai essayé avec un querybuilder que j'appelais dans mon controller sauf que ça mettait des erreurs partout et vu que je suis pas très douée avec les querybuilders donc j'ai fait juste des findAll() dans le controller

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    {
    $typefluxs=$em->getRepository('StoTypeFlux')->findAll();
    $applications=$em->getRepository('XfeApplication')->findAll();
    return array( "typefluxs" => $typefluxs, "applications" => $applications);
      }

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/04/2004, 11h09
  2. Réponses: 2
    Dernier message: 20/02/2004, 09h47
  3. [ DB2] => [ORACLE] Récupération de données
    Par LeDid dans le forum DB2
    Réponses: 3
    Dernier message: 25/06/2003, 18h10
  4. Réponses: 13
    Dernier message: 20/03/2003, 09h11
  5. [XMLRAD] récupération de donnée
    Par Mitch79 dans le forum XMLRAD
    Réponses: 7
    Dernier message: 30/01/2003, 16h36

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