Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 27-10-2010 12:39:02

GueloSuperStar
Membre
Lieu: Paris
Date d'inscription: 05-08-2009
Messages: 107

requêtes avec selection de champs

Bonjour les Zender'S,

Dans mon application, j'ai cette architecture :

une classe avec l'objet métier :

Code:

class Module_Model_DbTable_Classe extends Zend_Db_Table_Abstract{
    protected $_name = 'table';
    protected $_primary = 'id';
}

une classe avec la couche persistante :

Code:

class Backend_Model_Classe{
protected $id;
protected $champ1;
protected $champ2;
public function __construct(array $options = null){}

public function getMapper(){
        if (null === $this->_mapper)
            $this->setMapper(new Backend_Model_ClasseMapper());
        return $this->_mapper;
    }

    public function setMapper($mapper){
        $this->_mapper=$mapper;
        return $this;
    }

      public function getMaxId(){
        return $this->getMapper()->getMaxId();
    }

}

une classe avec l'objet mapper :

Code:

class Backend_Model_QuestionnaireVersionMapper{

    public function setDbTable($dbTable){
        if(is_string($dbTable)) {
            $dbTable = new $dbTable();
        }
        if(!$dbTable instanceof Zend_Db_Table_Abstract) {
            throw new Exception('Invalid table data gateway provided');
        }
        $this->_dbTable = $dbTable;
        return $this;
    }

    public function getDbTable(){
        if(null === $this->_dbTable) {
            $this->setDbTable('Backend_Model_DbTable_Classe');
        }
        return $this->_dbTable;
    }

      public function getMaxId(){
        $select = $this->getDbTable()->select()->setIntegrityCheck(false)->from(array('t'=>'table'),array('MAX(t.id) as maxId'));
        $resultSet = $this->getDbTable()->fetchRow($select);
        if(count($resultSet)==0) return 1;
        return $resultSet->maxId;
      }

}

Les questions que je me pose sont  :

- Est-ce la bonne manière de faire?
- Est-ce que pour faire une requête sur un champ en particulier et/ou récupérer certains champs on est obligé de passer par : setIntegrityCheck(false) ?



Merci pour votre aide les Zender'S wink

Dernière modification par GueloSuperStar (27-10-2010 12:40:43)


A+ Guelo Super Star

Hors ligne

 

#2 02-11-2010 10:48:10

GueloSuperStar
Membre
Lieu: Paris
Date d'inscription: 05-08-2009
Messages: 107

Re: requêtes avec selection de champs

Salut les Zender's,

Je fais un petit up pour ce post car j'aimerais vraiment savoir si ce que je fais est correcte et respect bien la modèle MCV.

Et aussi savoir si on est obliger de passer par "setIntegrityCheck(false) " pour faire par exemple un "COUNT","MAX","MIN" ou sélectionné juste un champ précis.


Merci smile


A+ Guelo Super Star

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