Bonjour a tous et un grand bravo a ce forum car je trouve ici plein d'information utile a la compréhension de ZF.
je viens de commencer mon apprentissage de ZF et j ai donc réalisé le tuto "débuter avec ZF 1.10 de Rob Allen".
Après avoir fait ce tuto j ai voulu voir si je pouvais faire moi même mes requêtes a la main du genre:

que je place dans application/model/artiste.php

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
class Application_Model_Artiste extends Zend_Db_Table
{
    public function listArtiste()
    {
        $result = $db->query('SELECT artiste FROM albums');
        $data =  $result->fetchAll();
        return $data;
    }
}
et la contre tout attente j ai un message d'erreur me disant que query n'est pas un objet donc j en déduit $db que je pensait avoir initialiser dans application.ini n'est accessible de partout dans l application.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
; connexion à une base de données
resources.db.adapter = PDO_MYSQL
resources.db.params.host = localhost
resources.db.params.username = root
resources.db.params.password =
resources.db.params.dbname = toto
Donc pour résoudre ça j'ai fait la chose suivante

Dans public/index.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
$params = array (   'host'     => 'localhost',
                    'username' => 'root',
                    'password' => '',
                    'dbname'   => 'toto'
);
$db = Zend_Db::factory('PDO_MYSQL', $params);
Zend_Registry::set('db', $db);
Dans application/model/artiste.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
class Application_Model_Artiste extends Zend_Db_Table
{
    public function listArtiste()
    {
        $db=Zend_Registry::get('db');
        $result = $db->query('SELECT artiste FROM albums');
        $data =  $result->fetchAll();
        return $data;
    }
}
Dans le controller
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
$artistee = new Application_Model_Artiste();
$rows = $artistee->listArtiste();
$this->view->lesArtistes = $rows;
et dans la vue
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
<?php foreach($this->lesArtistes as $artiste) : ?>
   <?php echo $artiste['artiste']."<br>"; ?>
<?php endforeach; ?>

Ma première question est ce une bonne chose d'écrire soit même les requêtes. En fait j'ai peur d'etre limiter si je me sers des objets disponibles.

Ma deuxième question: est ce la bonne méthode pour rendre accessible dans toute l application $db car avec cette méthode je suis obligé de l appeler a chaque fois avec
Code : Sélectionner tout - Visualiser dans une fenêtre à part
$db=Zend_Registry::get('db');
Par avance merci de toute vos remarques
Séb