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

Zend Framework PHP Discussion :

[ZF2.x] Récupérer l'unique tuple d'une requête


Sujet :

Zend Framework PHP

  1. #1
    Membre Expert
    Avatar de narmataru
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 548
    Par défaut [ZF2.x] Récupérer l'unique tuple d'une requête
    Bonjour,

    J'effectue une requête via un \Zend\Db\Adapter\Adapter. Celà fonctionne très; jusqu'alors je bouclais sur le résultat traiter l'ensemble des lignes du résultat :

    Code ex : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    foreach($result as $row){
    			$m = new Menu($row['id'], $row['code']);
    			array_push($subs, $m);
    }

    Je me trouve devans le cas ou ma requête ne dois renvoyer qu'une seule ligne.
    comment la récupérer ? J'ai essayé : $result[0]['id'], j'ai une erreur php qui me dit que $result n'est pas un tableau.

    Merci de vos éclaircissements.

  2. #2
    Membre Expert
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Par défaut
    Bonsoir,
    Tu as regardé ce qu'il y avait dans $result ?

  3. #3
    Membre Expert
    Avatar de narmataru
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 548
    Par défaut
    Voici la première ligne du var_dump :

    bject(Zend\Db\Adapter\Driver\Pdo\Result)[200]

  4. #4
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Et les autres lignes ?...

  5. #5
    Membre Expert
    Avatar de narmataru
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 548
    Par défaut
    Je pensais que le type de l'objet suffisait

    Voici le reste :

    object(Zend\Db\Adapter\Driver\Pdo\Result)[191]
    protected 'statementMode' => string 'forward' (length=7)
    protected 'resource' =>
    object(PDOStatement)[192]
    public 'queryString' => string 'SELECT * FROM page, menu WHERE

    page.id = menu.page_id AND

    menu.id=?' (length=99)
    protected 'options' => null
    protected 'currentComplete' => boolean false
    protected 'currentData' => null
    protected 'position' => int -1
    protected 'generatedValue' => string '0' (length=1)
    protected 'rowCount' => int 1

  6. #6
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    C'est un Result, et non pas un ResultSet. Il n'implémente donc pas l'interface Traversable.
    C'est un peu compliqué comme vocabulaire, mais en bref, cela veut dire que tu ne peux pas t'en servir comme un tableau.

    Que donne ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    \Zend\Debug\Debug::dump($result->current());

  7. #7
    Membre Expert
    Avatar de narmataru
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 548
    Par défaut
    Merci encore ! C'est ->current() que je n'avais pas

  8. #8
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Juste pour confirmer que tu es sur la bonne voie : qu'est-ce que tu as dans le current() ?
    Si je suppute bien, ça devrait déjà être un objet Menu, non ?

  9. #9
    Membre Expert
    Avatar de narmataru
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 548
    Par défaut
    Non c'est un array clef/valeur.

  10. #10
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Citation Envoyé par narmataru Voir le message
    Non c'est un array clef/valeur.
    Cela ne devrait-il pas être un objet Menu ?
    A moins que la requête ne soit une requête spécifique qui ne ramène pas toute une ligne ?

  11. #11
    Membre Expert
    Avatar de narmataru
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 548
    Par défaut
    Non, je passe par plusieurs requete SQL pour générer mes entités métiers. Je n'ai pas pu utiliser AbstractTableGateway car je charge mes objet à partir de plusieurs table.

    Je récupère mes données via SQL, puis j'instancie mes objets.

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

Discussions similaires

  1. [MySQL] récupérer la valeur résultant d'une requête SELECT MAX
    Par dabac dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 20/02/2010, 20h02
  2. récupérer un champ à partir d'une requête
    Par paolo2002 dans le forum VBA Access
    Réponses: 2
    Dernier message: 16/06/2009, 20h57
  3. Réponses: 3
    Dernier message: 25/09/2008, 10h26
  4. Réponses: 2
    Dernier message: 11/07/2007, 12h59
  5. récupérer date et heure d'une requête
    Par taffMan dans le forum Langage SQL
    Réponses: 2
    Dernier message: 08/02/2007, 13h55

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