Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour les Zender'S,
Dans mon application, j'ai cette architecture :
une classe avec l'objet métier :
class Module_Model_DbTable_Classe extends Zend_Db_Table_Abstract{ protected $_name = 'table'; protected $_primary = 'id'; }
une classe avec la couche persistante :
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 :
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
Dernière modification par GueloSuperStar (27-10-2010 12:40:43)
Hors ligne
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
Hors ligne