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_Db PHP Discussion :

Utilité de Zend_Db_Table_Row_Abstract ?


Sujet :

Zend_Db PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de __fabrice
    Homme Profil pro
    Développeur Back-End
    Inscrit en
    Août 2004
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Août 2004
    Messages : 404
    Par défaut Utilité de Zend_Db_Table_Row_Abstract ?
    Salut à tous,

    Je cherche à profiter pleinement des possibilité de ZF sur les bdd. Donc, prenat un exemple (dans un livre) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php 
    class Model_DbTable_Users extends Zend_Db_Table_Abstract {
    	protected $_name = 'users';
    	protected $_rowClass = 'Model_DbTable_User';
    }
    ?>
    et :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    Class Model_DbTable_User extends Zend_Db_Table_Row_Abstract
    {
    	public function name(){
    		$name = trim($this->first_name . ' ' . $this->last_name);
    		return $name;
    	}
    }
    ?>
    Tous 2 dans le repertoire models/DbTable/

    Ensuite, j'ai essayé naturellement ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $users = new Model_DbTable_Users();
    $fab = $users->find(1)->current();
    echo $users->name();
    J'ai cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fatal error: Call to undefined method Model_DbTable_Users::name()
    C'est pourtant bien l'interet de la liaison des tables pour récuperer un Row et faire des traitement dessus non ?

    Merci

    Fabrice

  2. #2
    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
    le code correct serait plutôt ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $users = new Model_DbTable_Users();
    $fab = $users->find(1)->current();
    echo $fab->name;
    D'une part tu n'utilisais pas le bon objet : il faut utiliser le résultat de ton find, en l'occurence l'objet $fab (qui est un Zend_Db_Table_Row) et ensuite utiliser le getter de l'attribut name, et non pas une méthode d'accesseur.

  3. #3
    Membre éclairé
    Avatar de __fabrice
    Homme Profil pro
    Développeur Back-End
    Inscrit en
    Août 2004
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Août 2004
    Messages : 404
    Par défaut
    ok merci.

    Mais par contre, il faut bien, il me semble , utiliser $fab->name(), car ->name me renvoi une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Message: Specified column "name" is not in the row
    .

    Fabrice

  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
    Citation Envoyé par __fabrice Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Message: Specified column "name" is not in the row
    A priori la table de contient pas de colonne "name".

  5. #5
    Membre éclairé
    Avatar de __fabrice
    Homme Profil pro
    Développeur Back-End
    Inscrit en
    Août 2004
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Août 2004
    Messages : 404
    Par défaut
    oui, j'avais compris en fait . ->name() c'est la fonction membre et ->name le nom du champs de la table Users.

    Mais du coup, quel est l'utilité de Zend_Db_Table_Row_Abstract ? un exemple ? .
    Car on peut avoir acces aux champs avec Zend_Db_Table_Abstract.

    Fabrice

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 178
    Par défaut
    Hello,

    Le row sert simplement à représenter une ligne de ta table, tu peux en créer via la table, les updater et les deleter, tu peux aussi trouver les parents et descendants.

    Cet abstract contient tout ça + des méthodes hook pour te raccrocher à certaines de ces opérations, avant/après insertion, update, delete.

    Et bien sûr, le jour où ton model à du vrai taff à faire, certainement que ton row aura du taff représenté par des méthodes.

    Par ex, ton user pourrait se prendre une méthode notify() capable de lancer un mail à l'utilisateur en se basant sur les données du row

    Bref, plein de trucs utiles dans la vraie vie et qui se voient pas forcément sur des exemples abstraits

Discussions similaires

  1. Utilité d'un pointeur vers une fonction ?
    Par Nasky dans le forum C
    Réponses: 10
    Dernier message: 20/03/2010, 19h54
  2. [J2EE] Utilité de la J2EE de SUN ?
    Par PeteMitchell dans le forum Java EE
    Réponses: 4
    Dernier message: 14/05/2004, 10h29
  3. [LG]Utilité du type enuméré ?
    Par tarbala dans le forum Langage
    Réponses: 2
    Dernier message: 10/12/2003, 16h20
  4. Le BIOS et son utilité
    Par le mage tophinus dans le forum Assembleur
    Réponses: 75
    Dernier message: 21/11/2003, 15h37
  5. utilité du binaire et hexadecimaux?
    Par souris78 dans le forum C
    Réponses: 9
    Dernier message: 01/07/2003, 15h08

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