Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
J'ai configurer ma base de donnée en .ini dans le le fichier configuration.ini sa ressemble a ceci :
resources.db.adapter = "PDO_MYSQL"
resources.db.params.host = "localhost"
resources.db.params.dbname = "zend"
resources.db.params.username = "root"
resources.db.params.password = ""
resources.db.params.charset = UTF8
J'aimerais savoir comment appeler ma base de donnée pour faire une requête. J'ai essayé avec "$this->getAdapter();" mais sa ne marche pas. Voici le code en entier :
$db = $this->getAdapter();
$select = $db->select()
->from('products')
->where('visilibity = "0"')
->limit(5);
$query = $select->query();
$result = $query->fetchAll();
Merci,
Fabien.
Dernière modification par Siol (19-10-2010 09:42:42)
Hors ligne
Il te manque la configuration de ton front controller.
Voici ce que tu dois y ajouter :
try { $db = Zend_Db::factory($configMain->resources.db); $db->query("SET NAMES 'UTF8'"); // passage de la connexion à toutes les classes passerelles Zend_Db_Table_Abstract::setDefaultAdapter($db); } catch (Zend_Db_Exception $e) { // on passe l'exception sous silence, elle sera gérée dans le systême MVC plus tard echo $e->getMessage(); }
Après tes classes vont hériter de de Zend_Db_Table puis dans pour faire un select tu n'auras qu'à écrire :
$select = $this->select(); $select->from(...); ...
Dernière modification par Godzinho (19-10-2010 10:00:08)
Hors ligne
Je n'ai pas réussi exactement comme tu m'as dit, mais j'ai réussi a le faire comme sa via Boostrap.php :
protected function _initDb()
{
try {
$resource = $this->getPluginResource('db');
$db = $resource->getDbAdapter();
Zend_Db_Table_Abstract::setDefaultAdapter($db);
} catch (Zend_Db_Exception $e) {
echo $e->getMessage();
}
$select = $db->query('SELECT name FROM products LIMIT 5');
$rows = $select->fetchAll();
print_r($rows);
}
Avec sa j'arrive a faire des requête Mysql depuis le Bootstrap mais comment en faire depuis un controller ? J'ai essayer $this->select() ou $this->db->select() ou $db->select() mais cela ne marche pas. Quel est la bonne syntaxe ?
Merci.
Hors ligne
Tu ne fais pas des requêtes depuis un controlleur mais depuis un modèle.
Tu es en MVC, donc les classes qui accèdent à la BD sont dans le modèle.
Chaque classe va hériter de la classe Zend_Db_Table.
Ainsi tu pourras faire appel à $this->select();
Hors ligne
Ok merci pour les infos, je vais essayer de faire un modèle
Hors ligne
Pages: 1