Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
j'essaie d'utiliser la méthode fetchAll de la classe Zend_Db_Abstract.
J'ai donc une class MaTable, héritant de Zend_Db_Abstract (ainsi que les MyTableRow et MyTableRowset bien sûr)
Pour récupérer des enregistrements Rowset, j'essaie de faire (je ne mets pas le signe dollar par commodité) :
myTable = new MyTable();
select = this.getSelect(); // peu importe comment je récupere une instance de Zend_Db_Select
select->from('maTable');
select->where ('col1 = "titi"');
select->where ('col2 = "toto"');
maTableRowset = myTable->fetchAll(select);
j'ai une erreur : dans la requete finale, j'ai un truc du genre :
select * from maTable where ((col1 = "titi") AND (AND (col2 = "toto")))
Vous voyez le pb je pense : lors de la construction de la requête, il reconstruit la clause where 2 fois dans le code (sisi, j'ai débuggué). Du coup, il rajoute deux fois le AND.
Avez vous déjà eu ce pb?dois je modifier le code du ZF?Je n'en ai pas envie car si je dois changer de version, va falloir maintenir le code du ZF!!
Yoong
Hors ligne
Bonjour,
apparemment, y a pas bcp de personnes utilisant cette classe?
Yoong
Hors ligne
Je l'utilise, comme beaucoup de monde, cependant je n'ai jamais rencontré ce problème là
Hors ligne
utilise la balise
[code ]
pour affichier ton code (voir BB code dans le pied de la zone de saisie)
Peux tu nous afficher la requête générée
j'ai l'impression que tu ne fais pas le nécessaire
il me semble que tu dois faire
// errueur sur cette ligne => select = this.getSelect(); // peu importe comment je récupere une instance de Zend_Db_Select // Non ça a une grosse importance $select = $myTable; // ne pas mettre de from //select->from('maTable'); $select->where ('col1 = "titi"'); $select->where ('col2 = "toto"'); $maTableRowset = $myTable->fetchAll($select);
ou de façon beaucoup plus simple
$maTableRowset = $myTable->fetchAll('col1 = "titi" AND 'col2 = "toto"');
A+JYT
Dernière modification par sekaijin (04-07-2008 14:22:09)
Hors ligne
Si tu veux mettre la condition du where de façon étendue comme tu le fais il faut écrire :
$select->where(new Zend_Db_Expr('col1 = "titi"'));
Sinon tu utilise la syntaxe traditionnelle liée à cette classe :
$where = $this->getAdapter()->quoteInto('col1 = ?','titi');
Tout ça est plutôt bien expliqué dans la doc du ZendFramework, ce qi n'est pas le cas d'autre domaines...
Hors ligne