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
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.
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
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
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
1 2 3
| $artistee = new Application_Model_Artiste();
$rows = $artistee->listArtiste();
$this->view->lesArtistes = $rows; |
et dans la vue
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
$db=Zend_Registry::get('db');
Par avance merci de toute vos remarques
Séb
Partager