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

ORM PHP Discussion :

getEmail me retourne une doctrine collection et pas un string [Doctrine]


Sujet :

ORM PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2003
    Messages : 307
    Par défaut getEmail me retourne une doctrine collection et pas un string
    Hello,

    voici mon schema :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Destinataire:
      actAs: { Timestampable: ~ }
      columns:
        email:       { type: varchar(100), notnull: true, email: true }
        nom:         { type: varchar(100)}
        prenom:      { type: varchar(100)}
    je récupère mes emails (lib/model/doctrine/Destinataire.class.php) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <?php
    public static function getEmail() {
     
            $q = Doctrine_Core::getTable('Destinataire')
                            ->createQuery('c')
                            ->select('c.email')
                            ->orderBy('c.email ASC');
            $destinataires = $q->execute();
     
            return $destinataires;
        }
    ?>
    dans mon action.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php
    $destinataires = Destinataire::getEmail();
             foreach($destinataires as $destinataire) {
                echo "<pre>";
                 echo $destinataire->getEmail();
                echo $destinataire->getNom();
                echo "</pre>";
            }
    ?>
    J'ai bien un string en retour pour le nom
    mais pour l'email j'ai un doctrine collection :

    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
     
    Doctrine_Collection
    data : Array(
        0 : Object(AdlDestinataire)
        1 : Object(AdlDestinataire)
        2 : Object(AdlDestinataire)
        3 : Object(AdlDestinataire)
        4 : Object(AdlDestinataire)
        5 : Object(AdlDestinataire)
        6 : Object(AdlDestinataire)
        7 : Object(AdlDestinataire)
        8 : Object(AdlDestinataire)
        9 : Object(AdlDestinataire)
        10 : Object(AdlDestinataire)
        11 : Object(AdlDestinataire)
        12 : Object(AdlDestinataire)
        13 : Object(AdlDestinataire)
        14 : Object(AdlDestinataire)
        15 : Object(AdlDestinataire)
        16 : Object(AdlDestinataire)
        17 : Object(AdlDestinataire)
    )
    Je comprends ce qui se passe c'est la première fois que je suis confronté au problème ??

    Merci

  2. #2
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    C'est normal : c'est ta méthode statique Destinataire::getEmail() qui est appelée, et pas la méthode non statique $destinataire->getEmail().

    Et ceci pour une raison simple : la méthode d'instance getEmail() - comme tous les accesseurs get/set relatifs aux colonnes de la table associée à la classe, n'existe pas : elle n'est déclarée nulle part, elle est juste inférée par Symfony. Jette un oeil sur BaseDestinataire et les classes en amont pour t'en convaincre

    Cela dit, il faut bien avouer que nommer une méthode statique getEmail() quand on a un accesseur getEmail() dans la même classe (ou famille de classes), c'est un peu se tirer une balle dans le pied, même sans Symfony. Surtout quand cette méthode statique getEmail() renvoie... une liste de Destinataire(s)

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2003
    Messages : 307
    Par défaut
    il faut bien avouer que nommer une méthode statique getEmail() quand on a un accesseur getEmail() dans la même classe (ou famille de classes), c'est un peu se tirer une balle dans le pied
    lol

    je ris de ma propre bêtise

    Merci

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

Discussions similaires

  1. Retourner une adresse de variable. pas de malloc ?
    Par Mimidoux dans le forum Débuter
    Réponses: 7
    Dernier message: 14/08/2009, 03h41
  2. Fonction qui retourne une collection
    Par superfly dans le forum Oracle
    Réponses: 9
    Dernier message: 25/06/2009, 18h02
  3. Réponses: 2
    Dernier message: 16/03/2009, 14h37
  4. Réponses: 3
    Dernier message: 13/05/2008, 11h30
  5. Réponses: 4
    Dernier message: 08/11/2006, 08h56

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