Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 03-10-2008 14:33:36

BeRoots
Membre
Date d'inscription: 15-05-2008
Messages: 79

[resolu][ZFversion1.6]Zend_Db et ces classes...

Salut la compagnie smile
J'ai divers question quand à l'utilisation de Zend_Db:

regarder ceci:

Code:

/**
* 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:

Code:

/**
* 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:

Code:

<?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 tongue

Merci d'avance wink

Dernière modification par BeRoots (05-10-2008 16:06:53)


wink Non au language SMS sur nos forums wink

Hors ligne

 

#2 04-10-2008 21:29:29

BeRoots
Membre
Date d'inscription: 15-05-2008
Messages: 79

Re: [resolu][ZFversion1.6]Zend_Db et ces classes...

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 wink


wink Non au language SMS sur nos forums wink

Hors ligne

 

#3 04-10-2008 22:47:55

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

Re: [resolu][ZFversion1.6]Zend_Db et ces classes...

Hello,

Attention : l'ANCIEN comportement de fetchAll est déprécié.

A+


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

Hors ligne

 

#4 05-10-2008 01:02:58

BeRoots
Membre
Date d'inscription: 15-05-2008
Messages: 79

Re: [resolu][ZFversion1.6]Zend_Db et ces classes...

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 wink


wink Non au language SMS sur nos forums wink

Hors ligne

 

#5 05-10-2008 09:33:38

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

Re: [resolu][ZFversion1.6]Zend_Db et ces classes...

Hello,

Code:

// 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 smile .

A+


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

Hors ligne

 

#6 05-10-2008 16:06:33

BeRoots
Membre
Date d'inscription: 15-05-2008
Messages: 79

Re: [resolu][ZFversion1.6]Zend_Db et ces classes...

ok c'est pas grave, j'ai fini par trouver mes reponses smile

Merci pour le details de la doc... c'était primordiale wink


wink Non au language SMS sur nos forums wink

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