Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 04-04-2008 20:59:43

kiminox
Membre
Date d'inscription: 15-01-2008
Messages: 37

[Zend_Db_Select][1.5]

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

 

#2 03-07-2008 22:22:27

kiminox
Membre
Date d'inscription: 15-01-2008
Messages: 37

Re: [Zend_Db_Select][1.5]

Bonjour,

apparemment, y a pas bcp de personnes utilisant cette classe?

Yoong

Hors ligne

 

#3 04-07-2008 09:56:00

stf
Membre
Date d'inscription: 03-04-2008
Messages: 156

Re: [Zend_Db_Select][1.5]

Je l'utilise, comme beaucoup de monde, cependant je n'ai jamais rencontré ce problème là yikes

Hors ligne

 

#4 04-07-2008 14:20:26

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: [Zend_Db_Select][1.5]

utilise la balise

Code:

[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

Code:

// 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

Code:

$maTableRowset = $myTable->fetchAll('col1 = "titi" AND 'col2 = "toto"');

A+JYT

Dernière modification par sekaijin (04-07-2008 14:22:09)

Hors ligne

 

#5 09-07-2008 19:29:20

Jean-Marc Rigade
Membre
Lieu: Rennes
Date d'inscription: 25-09-2007
Messages: 314

Re: [Zend_Db_Select][1.5]

Si tu veux mettre la condition du where de façon étendue comme tu le fais il faut écrire :

Code:

$select->where(new Zend_Db_Expr('col1 = "titi"'));

Sinon tu utilise la syntaxe traditionnelle liée à cette classe :

Code:

$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

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages