|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Invité de passage
![]() Étudiant Inscription : août 2011 Messages : 10 ![]() |
Bonsoir
Donc voilà je voudrai exécuter une requête en suivant le MVC de Zend, donc voilà quelques bouts de code : Le Modèle Tables.php : Code :
Code :
Code :
Fatal error: Call to a member function fetchAll() on a non-object in /opt/lampp/htdocs/contradictors/application/controllers/IndexController.php on line 11 Est-ce quelqu'un aurait une idée d'où provient cette erreur ? Merci d'avance |
||||||
|
|
00
|
|
|
#2 | ||||
|
Invité de passage
![]() Étudiant Inscription : août 2011 Messages : 10 ![]() |
C'est Bon maintenant ca marche:
Le Modèle Tables.php : Code :
Code :
|
||||
|
|
00
|
|
|
#3 |
![]() ![]() Loïc Développeur Web Inscription : février 2011 Messages : 680 ![]() |
Un conseil, pour créer un modèle Post représentant la table post de ta BDD, donne lui le même nom et non pas Tables.php
Pour ma part, j'aurais fait ainsi: - Le modèle serait dans le dossier : /application/models/DbTable/Post.php - L'entête du fichier serait : Model_DbTable_Post extends Zend_DbTable |
|
|
00
|
|
|
#4 |
|
Membre chevronné
![]() Taoufiq BenDéveloppeur Web Inscription : mai 2009 Messages : 465 ![]() |
Tu dois travailler avec autoloader du zend pour ne plus faire des require_once pour appeler tes class
|
|
|
00
|
|
|
#5 |
|
Membre régulier
![]() Étudiant Inscription : juin 2008 Messages : 70 ![]() |
Autres petites remarques :
- utilise la notationCamel pour tes variables ou méthodes - essaie de préfixer tes accesseurs par "get" ou "set" ton code sera beaucoup plus lisible. -Si tu as configurer ton adaptateur au niveau de ton bootstrap avec : Code :
Zend_Db_Table::setDefaultAdapter($myAdapter); - - (Edit:Je reformule) Ton modèle devrait plutôt retourner le résultat de "fetchAll()" et non celui d'un "$select->query()". Sinon, regarde bien la doc de fetchAll() car il retourne un Rowset et non un simple Array. Quand tu boucles dessus via un foreach, tu récupères un Row à chaque itération donc, faire "$row->monChamp" est possible. Un peu de lecture : ZF coding standard |
|
00
|
|
|
#6 |
![]() ![]() Loïc Développeur Web Inscription : février 2011 Messages : 680 ![]() |
Ce que tu signale est exacte mise à part un bémol, il vaut mieux que le fetchAll soit côté controller, le modèle n'a pas pour but de retourner un array, c'est à toi côté applicatif à faire de ton rowset ce que tu veux et non pas au modèle.
Chaque méthode d'un modèle devraient retournée un row ou un rowset quand cela est possible mais ne jamais effectué des opérations sur ces résultats avant de les retransmettre. Cela permet de pouvoir utiliser la méthode à plusieurs endroit, car si par exemple tu as besoin de travailler avec des objets dans une autre action, en transformant en array tu devra faire une nouvelle méthode |
|
|
00
|
|
|
#7 | ||
|
Membre régulier
![]() Étudiant Inscription : juin 2008 Messages : 70 ![]() |
On est d'accord, pour que la méthode retourne un Row ou Rowset il faut que les méthodes proxyant _fetch() soient coté modèle...
Sous-entendu : Code :
|
||
|
00
|
|
|
#8 |
![]() ![]() Loïc Développeur Web Inscription : février 2011 Messages : 680 ![]() |
Ok tu devrais donc modifier car mon commentaire vient du fait que tu dis mettre le fetchAll côté modèle et non controleur
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com