Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Salut la compagnie
J'ai divers question quand à l'utilisation de Zend_Db:
regarder ceci:
/** * Mise en place d'une instance d'adaptateur de base de données et passage de ceux-ci au registre */ $webmaster_db = Zend_Db::factory($registry->config->db->driver, array( 'host' => $registry->config->db->host, 'username' => $registry->config->db->user, 'password' => $registry->config->db->password, 'dbname' => 'MVC_'.$registry->system->webmaster->reference.'_db', 'options' => array( Zend_Db::CASE_FOLDING => Zend_Db::CASE_NATURAL, Zend_Db::AUTO_QUOTE_IDENTIFIERS => true ) )); Zend_Registry::set('webmaster_db', $webmaster_db); // plus loin.... $webmaster_db->getConnection($webmaster_db); $result = $webmaster_db->fetchRow('SELECT * FROM private_table_client WHERE id = 1');
ceci fonctionne bien, j'ai bien mes value de la table, mais aucun model n'est requis pour une tel methode apparemment...
sinon, j'ai essayer un truc du genre:
/** * Mise en place d'une instance d'adaptateur de base de données et passage de ceux-ci au registre */ $webmaster_db = Zend_Db::factory($registry->config->db->driver, array( 'host' => $registry->config->db->host, 'username' => $registry->config->db->user, 'password' => $registry->config->db->password, 'dbname' => 'MVC_'.$registry->system->webmaster->reference.'_db', 'options' => array( Zend_Db::CASE_FOLDING => Zend_Db::CASE_NATURAL, Zend_Db::AUTO_QUOTE_IDENTIFIERS => true ) )); Zend_Registry::set('webmaster_db', $webmaster_db); // plus loin... $webmaster_db->getConnection($webmaster_db); $table_webmaster = new WebmasterModel(array('webmaster_db' => 'webmaster_db')); // direct to registry inport $rows = $table_webmaster->find(1);
Dans ce cas la, j'ai pas de retour sur le contenu de l'enregistrement mai une erreur...
Fatal error: Uncaught exception 'Zend_Db_Table_Exception' with message 'No adapter found for WebmasterModel' in C:\wamp\www\0_lib\php\Zend\Db\Table\Abstract.php:549 Stack trace: #0 C:\wamp\www\zf-beroots-web\Application\Default\Models\webmasterModel.php(61): Zend_Db_Table_Abstract->_setupDatabaseAdapter('pdo_mysql') #1 C:\wamp\www\zf-beroots-web\Application\Default\Models\webmasterModel.php(53): WebmasterModel->_setupDatabaseAdapter() #2 C:\wamp\www\zf-beroots-web\index.php(98): WebmasterModel->__construct(Array) #3 {main} thrown in C:\wamp\www\0_lib\php\Zend\Db\Table\Abstract.php on line 549
voici le fichier model WebmasterModel:
<?php /** * Class WebmasterModel. * * Classe de bootstrap redirigant le index.php vers celle-ci * et ce pour des raisons de sécurité. * * @author Deschamps Sébastien <beroots74@gmail.com> * @copyright Deschamps Sébastien, all rights reserved. * @version 1.0 * @since PHP 5 * @name WebmasterModel */ class WebmasterModel extends Zend_Db_Table_Abstract { protected $_schema; protected $_name = 'WebmasterModel'; protected $_primary = 'id'; protected $pseudo; protected $mpass; protected $prenom; protected $nom; protected $email; public function __construct() { // on recupere les données depuis le registre $registry = Zend_Registry::getInstance(); $this->webmasterReference = $registry->system->webmaster->reference; $this->_schema = 'MVC_'.$this->webmasterReference.'_db'; // on paramètre le options de table $this->_setupDatabaseAdapter(); $this->_setupTableName(); $this->_setupMetadata(); $this->_setupPrimaryKey(); } protected function _setupDatabaseAdapter() { $this->_adapter = 'Pdo_Mysql'; parent::_setupDatabaseAdapter(); } protected function _setupTableName() { $this->_name = 'WebmasterModel'; parent::_setupTableName(); } protected function _setupMetadata() { $this->_schema = $this->_schema; parent::_setupMetadata(); } protected function _setupPrimaryKey() { $this->_primary = 'id'; parent::_setupPrimaryKey(); } protected function describeTable() { $this->_cols = array(); $this->_cols[0] = 'id'; $this->_cols[1] = 'pseudo'; $this->_cols[2] = 'mpass'; $this->_cols[16] = 'prenom'; $this->_cols[17] = 'nom'; $this->_cols[20] = 'email'; } }
1°) pour l'exemple 1, est ce normal comme utilisation de Zend_Db sans Model de table ?
2°) dans l'exemple 2, si quelqu'un peut m'aider à monter mon model car la c'est du pif
Merci d'avance
Dernière modification par BeRoots (05-10-2008 16:06:53)
Hors ligne
ok, je croit que le mieux est que je laisse tomber ces exemples tordu pour le moment...
J'ai parcouru la doc sur Zend_DB plus de 5 fois completement mais j'ai toujours pas tout saisi... Pour ce qui est de l'adapteur, j'ai tout à fait compris le principe et cela est assez simple, mais pour le reste, c'est plus chaud...
1°) en gros le model est une classe de definitions de table qui étant toujours Zend_Db_Table_Abstract() ? c'est sa?
2°) pour le model toujours, je le conçois aussi comme un pro-format (ou shema de definition) pour ma table sql...
En gros il contient les paramètres de table tels que le nom, la clé primaire, les dependances,...
Doit on toujours créé des méthodes dans ces Models représentant les divers actions possible sur la dit table ou est ce plus d'habitude de faire ceci après instanciation de l'objet correspondant à cette table, directement dans le controler ou sur bootstrap ?
3°) je vois dans la doc que fetchall() est déprecié mais j'ai pas trop compris pourquoi et surtout ce que l'on doit essayer de faire?
Cf. la doc zend framework
Merci d'avance pour vos réponse
Hors ligne
Hello,
Attention : l'ANCIEN comportement de fetchAll est déprécié.
A+
Hors ligne
3° bis) donc pour les ancienne version de ZF ou bien ?
Sinon merci d'avance pour vos réponse au question 1 & 2 de mon précédent post
Hors ligne
Hello,
// Récupérer un row $row = $table->fetchRow('bug_status = "NEW"', 'bug_id ASC'); // <- ancien comportement déprécié $row = $table->fetchRow($table->select()->where('bug_status = ?', 'NEW') ->order('bug_id ASC')); // <- nouveau comportement à adopter
Désolé, mes vacances d'été démarre enfin dans quelques heures donc pas de temps pour les 1 et 2 .
A+
Hors ligne
ok c'est pas grave, j'ai fini par trouver mes reponses
Merci pour le details de la doc... c'était primordiale
Hors ligne