Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 07-07-2009 10:00:09

Dede
Membre
Date d'inscription: 26-06-2009
Messages: 99

[1.8]Fichier spécial dans les modèles ?

Bonjour,
Je suis en train de construire ma première application Zend Framework, j'ai suivit le quickstart, donc chaque table comport (comme dans le quick start) un model, un mapper et un accès à la table via extends Zend_Db_Table_Abstract (si j'ai tout pigé big_smile)

Architecture :
                              Application/
                               |____ config/
                               |____ controllers/
                               |____ models/
                               |           |__ dbtable/
                               |____ views/
                               |           |__ script/
                               |
                               |__ bootstrap.php

Maintenant j'aimerais faire un ou plusieurs fichiers spéciaux pour des requêtes personnel sur plusieurs table?

Code:

class Default_Model_Special extends Zend_Db_Table_Abstract
{

      protected $_dbInstance;


      public function getDbInstance()
      {
         // comment récupéré l'instance ?
      }

      public function maRequete()
      {
             $select = $this->_dbInstance->select();    

       //Exemple de Zend Framework bien développer en PHP

             $select->from(array("r"=>"reservation"),"usage")
        ->join(array("s"=>"room"),
                     "r.id_room=s.id",
                     array("salle"=>"name"))
        ->join(array("u"=>"user"),
                     "r.creator=u.id",
                     array("personne"=>"firstname"))
        ->where("s.id=1")
        ->where("u.id=2")
        ->limit(3);

             $this->_dbInstance->fetchAll($select);
      }

 //.....etc
}

Dans un premier temps j'aimerais récupérer l'instance $db afin que mon fichier de soit pas lier à une table pour ensuite pouvoir créer des requêtes dans des fonctions selon les besoins.

Est-ce possible et est-ce la bonne méthode ?
Y a-t-il d'autre solutions, méthodes ?

Dede


« Il ne faut pas lier un navire à une seule ancre, ni une vie à un seul espoir. »
Epictète
http://www.noumcreation.com

Hors ligne

 

#2 07-07-2009 10:40:43

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: [1.8]Fichier spécial dans les modèles ?

Hello,

Code:

class Default_Model_Special extends Zend_Db_Table_Abstract
{

      public function maRequete()
      {
             $select = $this->select();    // sans le dbInstance

       //Exemple de Zend Framework bien développer en PHP

             $select->from(array("r"=>"reservation"),"usage")
        ->join(array("s"=>"room"),
                     "r.id_room=s.id",
                     array("salle"=>"name"))
        ->join(array("u"=>"user"),
                     "r.creator=u.id",
                     array("personne"=>"firstname"))
        ->where("s.id=1")
        ->where("u.id=2")
        ->limit(3);

             $this->getAdapter()->fetchAll($select);  // getAdapter au lieu de instance
      }

 //.....etc
}

Pour le paramétrage, soit un setAdapter(), soit Zend_Db_Table_Abstract::setDefaultAdapter().

A+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#3 07-07-2009 10:55:42

Dede
Membre
Date d'inscription: 26-06-2009
Messages: 99

Re: [1.8]Fichier spécial dans les modèles ?

Merci mikaelkael,

j'essaie ça et je te dis...

Dede smile


« Il ne faut pas lier un navire à une seule ancre, ni une vie à un seul espoir. »
Epictète
http://www.noumcreation.com

Hors ligne

 

#4 07-07-2009 15:02:52

Dede
Membre
Date d'inscription: 26-06-2009
Messages: 99

Re: [1.8]Fichier spécial dans les modèles ?

Et bien j'ai chercher mais je n'y arrive pas,
je dois avoir loupé et étape.. et surtout, je ne suis pas doué sad lol

J'ai mis le fichier ci-dessus dans application/models/Special.php,
j'appel ce fichier de cette manière dans le controleur :

Code:

public function indexAction()
{
     $special = new Iadmin_Model_Special();
     $result = $special->maRequete();
     var_dump($result); // pour le test
}

Mais je ne trouve pas ou faire l'appel à setAdapter() ou Zend_Db_Table_Abstract::setDefaultAdapter(), j'ai essayé dans le "Special.php" et dans le controlleur, le mieux que j'ai eu c'est :
La table spécifié ('') n'existe pas ....
Il me met souvent "ne peut instancier ou erreur dans le select" ?

help please....

Dede

Dernière modification par Dede (07-07-2009 15:03:43)


« Il ne faut pas lier un navire à une seule ancre, ni une vie à un seul espoir. »
Epictète
http://www.noumcreation.com

Hors ligne

 

#5 07-07-2009 16:57:02

Dede
Membre
Date d'inscription: 26-06-2009
Messages: 99

Re: [1.8]Fichier spécial dans les modèles ?

Alors du coup j'ai fait ça :

Code:

class Default_Model_Special                           //suppression de extends Zend_Db_Table_Abstract
{

    protected $_dbAdaptateur;

    public function setAdaptateur()
    {
        $front = Zend_Controller_Front::getInstance();
        $bootstrap = $front->getParam('bootstrap');
        return $bootstrap->getResource('db');
    }

    public function getAdaptateur()
    {
        if (null === $this->_dbAdaptateur) {
            $this->_dbAdaptateur = $this->setAdaptateur();
        }
        return $this->_dbAdaptateur;
    }

    public function maRequete()
    {

       //Exemple de Zend Framework bien développer en PHP

             $select->from(array("r"=>"reservation"),"usage")
                                                 ->join(array("s"=>"room"),
                                                                "r.id_room=s.id",
                                                                 array("salle"=>"name"))
                                                 ->join(array("u"=>"user"),
                                                                 "r.creator=u.id",
                                                                  array("personne"=>"firstname"))
                                                 ->where("s.id=1")
                                                 ->where("u.id=2")
                                                 ->limit(3);

             $this->getAdaptateur()->fetchAll($select);
      }

}

Mais je ne suis pas sûr que ce soit la marche à suivre ?
En tous cas c'est bien l'idée, récupérer l'adaptateur pour faire des requête particulières ?

Si je suis sur la mauvaise voie dit le moi avant que je prenne de mauvaise habitude smile.

Dede


« Il ne faut pas lier un navire à une seule ancre, ni une vie à un seul espoir. »
Epictète
http://www.noumcreation.com

Hors ligne

 

#6 07-07-2009 17:01:43

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: [1.8]Fichier spécial dans les modèles ?

de memoire tu passe un array de config à ta table pour lui donner l'adpter de ton choix ou alors tu choisit l'adapteur par defaut et tu ne le passe pas en param

Hors ligne

 

#7 07-07-2009 18:28:29

Dede
Membre
Date d'inscription: 26-06-2009
Messages: 99

Re: [1.8]Fichier spécial dans les modèles ?

?? là c'est du chinois, j'espère pas pour trop longtemps hmm roll

Pour moi de ce que je comprend, pour le moment je récupère l'adaptateur que récupère les autre modèles abstrait.
Est bien ça ?
Et toujours la même question, est-ce une bonne méthode?

j'ai un peu de mal entre le bouquin (plus à jour) et les évolution des méthodes de cette version neutral neutral ??


« Il ne faut pas lier un navire à une seule ancre, ni une vie à un seul espoir. »
Epictète
http://www.noumcreation.com

Hors ligne

 

#8 07-07-2009 19:48:47

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: [1.8]Fichier spécial dans les modèles ?

Hello,

Tu es tout simplement en train de copier Zend_Db_Table_Abstract.
Regardes du côté de : http://framework.zend.com/manual/fr/zen … ng.adapter ou http://framework.zend.com/manual/fr/zen … lt-adapter

A+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages