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

MVC PHP Discussion :

Résultat de DB dans des objets


Sujet :

MVC PHP

  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2008
    Messages
    333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2008
    Messages : 333
    Par défaut Résultat de DB dans des objets
    Bonjour,


    J'ai suivi le tutoriel très interessant et utiles que l'on trouve sur ce site même : "donnez de la puissance à vos modèles".

    J'ai compris le fonctionnement général, mais certaines zones restent floues. En suivant ce tuto, on défini une table, un row et un object pour chaque table de la bdd (table "articles" avec donc "Tables_Articles", "Row_Article", "Object_Article". J'aimerais beaucoup utiliser cette classe Object_Article pour que les articles bénéficient de plusieurs méthodes qui me sont utiles (estimé la longueur pour la pagination, moyenne de notes, extraire le premier paragraphe...).
    Tout ceci me serait vraiment utile, mais je ne comprends pas comment je peux récupérer directement un objet et non une array, peu importe que le retour soit un seul article ou bien une liste d'article...


    Je vous en exemple le type de requêtes que je fais à l'heure actuelle (évidemment je doute que ce soit la bonne manière de procéder, ni même un "fetchAll()" ou un "fetchRow()" qui va régler mes soucis :s )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $query	= $this->_db->select()->from($this->_name)
    				->where('id = ?', $articleId);
    return $this->_db->fetchRow($query);
    Le reste du code est dans le tutoriel sus-cité.


    Merci d'avance !

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Bonjour, tu dois lui dire sous quelle forme tu veux recevoir les données.

    Sous la forme d'objet, il faut faire ceci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    $this->_db->setFetchMode(Zend_Db::FETCH_OBJ);
     
    $query	= $this->_db->select()->from($this->_name)
    				->where('id = ?', $articleId);
    return $this->_db->fetchRow($query);
    Soit tu le fais dans chaque fonction, soit tu le passe dans le bootstrap (pas tester).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // une configuration de base de données quelconque, contenant les tables 'Billets' et 'Membres'
    $config = new Zend_Config_Ini($appPath .'/config.ini');
    $db = Zend_Db::factory($config->db);
     
    $db->setFetchMode(Zend_Db::FETCH_OBJ);
     
    Zend_Db_Table_Abstract::setDefaultAdapter($db);

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2008
    Messages
    333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2008
    Messages : 333
    Par défaut
    hmmm, ca fonctionne ainsi, mais je me retrouve avec des objets "stdClass"... J'aurais voulu utiliser un objet "Object_Article" pour les articles par exemple. De plus cette classe est necessaire, tant que je n'ai pas creer la class "Object_Article" j'ai une erreur provenant de la class "My_Row".


    Il doit y avoir moyen de beneficier des methodes de ces classes directement et automatiquement (et non pas en passant le resultat a cette classe a chaque fois), et non d'une simple classe standard. J'ai beau retourner le tutoriel je ne comprends pas comment utiliser ces classes. Pour etre plus clair, j'aimerais qu'en faisant une requete de plusieurs articles, je recupere une array d'objet Object_Article automatiquement (sans en faire la demande), que je puisse passer a ma vue et utiliser par exemple une methode "getLink()" de cette classe "Object_Article" qui me fournira l'url de mon article a inserer dans le lien respectif de celui-ci. Donc quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $query	= $this->_db->select()->from($this->_name, array('title', 'id', 'category', 'subCategory'))
    				->where('category = ?', $category)
    				->where('subCategory = ?', $subCategory)
    				->where('id != ?', $except)
    				->order('timestamp DESC')
    				->limit($limit);
     
    	return $this->_db->fetchAll($query);
    Puis dans la vue, a qui le controller passe l'array "articles" contenant des objets Object_Article :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    foreach($this->articles as $article)
    	echo '<a href="'.$article->getLink().'">'.$article->title.' - '.$article->getNote().'</a>';
    Je recupere donc automatiquement des objets dont j'ecris les methodes et attributs, que j'utilise directement dans ma vu. PAr exemple une methode formattant mes urls, et une autre faisant la moyenne des notes a l'aide du nombre de votants et de points enregistres dans la bdd...


    Au cas ou, le tuto dont je parle est celui-ci, si l'auteur (le celebre Julien Pauli pour les adeptes de ZF ) meme passait par la d'ailleurs
    http://julien-pauli.developpez.com/tutoriels/zend-framework/atelier/modeles-puissance/#LIII


    PS : desole si j'ai du mal a etre clair, mais je suis autodidacte et je n'ai pas les termes exactes pour decrire mon soucis Ca vient avec le temps !

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/01/2014, 11h12
  2. Superposition dans des objets de type Table
    Par soso78 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 11/04/2009, 00h17
  3. Autocomplétion dans des objets EditBox
    Par lince102 dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 14/02/2008, 08h51
  4. recherche d'informations dans des objets de genbank
    Par Jasmine80 dans le forum Bioinformatique
    Réponses: 2
    Dernier message: 05/03/2007, 16h20
  5. Modifier l'ordre des objets dans dans une liste
    Par Mac_Gyver dans le forum Access
    Réponses: 2
    Dernier message: 24/01/2005, 11h55

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