Je suis assez nouveau pour OOP et Zend. Jusqu'à présent, j'essaie de mettre en place une connexion DB. J'ai dans mon application.ini:Novice: Comment configurer correctement la connexion db sur zend framework?
resources.db.adapter = "PDO_MYSQL"
resources.db.params.host = "localhost"
resources.db.params.username = "root"
resources.db.params.password = ""
resources.db.params.dbname = "dbtest"
resources.db.isDefaultTableAdapter = true
Soi-disant que je peux accéder à l'adaptateur db partout avec:
$db = Zend_Db_Table::getDefaultAdapter();
Le problème est la plupart des guides supposent que vous savez automatiquement où placer, mais je Honnêtement, je n'en ai aucune idée. Ce que je fais jusqu'à présent est dans mon modèle index.php J'ai une méthode:
public function getPosts()
{
$db = Zend_Db_Table::getDefaultAdapter();
$sql = "SELECT * FROM posts";
$result = $db->fetchAll($sql);
return $result;
}
Avec cette seule requête, il serait correct, mais si je veux créer plusieurs méthodes qui maintiennent mes autres requêtes chaque fois Je vais devoir appeler $ db = Zend_Db_Table :: getDefaultAdapter() donc je suis sûr que je ne le fais pas de manière efficace. J'ai déjà essayé de le placer dans diverses méthodes __construct() et init(), mais cela ne fonctionnerait pas. Où ajouterais-je le code sans avoir à l'appeler à chaque fois? Merci.
effectue automatiquement une connexion db pour vous? Où devrais-je enregistrer ma classe qui étend le Zend_Db_Table_Abstract, désolé encore une fois encore vraiment nouveau à ce sujet. – Joker
Si vous avez défini votre adaptateur de base de données par défaut dans votre bootstrap, automatiquement tout Zend_Db_Table_Abstract que vous étendez utilisera cet adaptateur sauf si vous spécifiez un autre adaptateur à utiliser. Puisque ZF utilise un chargeur automatique pour charger votre classe, vous devez juste vous assurer que le nom reflète la position du fichier, ie: Model_Db_Tables_Posts() doit se trouver dans les dossiers models/db/tables/posts.php du dossier de votre application (Zend convertit le modèle en modèles automatiquement dans le chemin). –
Merci, je l'ai fait fonctionner maintenant, mais maintenant je me retrouve dans la même situation qu'avant. Chaque fois que je veux appeler une méthode qui exécute une requête, je dois utiliser: $ postsTable = new Model_Db_Tables_Posts(), ou est-ce normal? Je pensais que vous ne voudriez pas répéter cela à chaque fois. – Joker