Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 09-05-2007 23:50:23

Killing Joke
Membre
Date d'inscription: 05-05-2007
Messages: 11

[Zend_Db][0.9.2] (débutant) comment dumper en debug ses requêtes ?

Question toute bête mais je sèche. Je voudrais afficher "en debug" la requête exacte réalisée via ZF.

Dans le cas d'un select type :

Code:

$select = $db->select();
...
$result = $db->fetchOne($select);

C'est tout bête, j'ai juste à faire un $select->__toString();
(mais il y a peut être mieux ? - c'est une méthode censée ne pas être appelée de l'extérieur, cf. __).

Par contre avec l'appel suivant sur un update :

Code:

$set = array(...);
$where = array(...);
$db->update('maTable', $set, $where);

Comment faire pour voir la requête réellement executée par ZF ?

En clair j'aurais voulu une méthode $db>lastSQL(); qui me retournerait le contenu exact de la dernière requête SQL executée en base. Est-ce qu'il faut regarder du côté des profiler ?

(N.B. : oui, normalement, çà ne devrait pas être utile, mais en mise au point c'est quand même assez pratique, surtout sur des DAO avec pas mal de paramètres)

Dernière modification par Killing Joke (09-05-2007 23:54:14)

Hors ligne

 

#2 10-05-2007 08:47:53

Damien
Membre
Lieu: Tassin la Demi Lune
Date d'inscription: 22-03-2007
Messages: 88

Re: [Zend_Db][0.9.2] (débutant) comment dumper en debug ses requêtes ?

Pour le premier exemple, il me semble que c'est echo $select->__toString()

Hors ligne

 

#3 10-05-2007 09:18:53

Isilgawen
Membre
Lieu: Limoges
Date d'inscription: 23-03-2007
Messages: 106

Re: [Zend_Db][0.9.2] (débutant) comment dumper en debug ses requêtes ?

Le mieux pour le débug c'est de faire dans le cas ou ton Zend_Db::factory est dans ton registre sous db :
Zend_registry::get('db')->getProfiler()->setEnabled(true);

Et ensuite en fin de code aprés ton dispatch faire un Zend_registry::get('db')->getProfiler()->getQueryProfiles(); cela te renvoi un tableau de toutes les requetes executées.

Quant à Zend_registry::get('db')->getProfiler()->getTotalNumQueries() te renvoi le nombre totale de requtes aussi c'est pratique smile

Dernière modification par Isilgawen (10-05-2007 09:19:44)

Hors ligne

 

#4 10-05-2007 09:30:15

Julien
Membre
Date d'inscription: 16-03-2007
Messages: 501

Re: [Zend_Db][0.9.2] (débutant) comment dumper en debug ses requêtes ?

Pour le __toString, qui est une structure de langage objet que l'on retrouve dans tous les langages objets, voyez la doc officielle, pour lever toute confusion.
On ne fait pas echo $objet->__tostring, mais echo $objet ( qui va appeler __toString() si elle existe ).

Hors ligne

 

#5 19-07-2007 17:26:24

ALkyD
Membre
Lieu: Limoges
Date d'inscription: 11-07-2007
Messages: 69
Site web

Re: [Zend_Db][0.9.2] (débutant) comment dumper en debug ses requêtes ?

Salut,
j'ai aussi un problème pour récupérer la requête SQL.

Code:

$req = 'SELECT xxx FROM yyy';
$var = $db->fetchOne($req);

Si la requête $req contient une erreur, Zend_Db renvoie une exception. Or je gère les exceptions avec set_exception_handler et une fonction callback qui a comme argument un objet de la classe Zend_Exception.

Question : comment récupérer la requête qui pose problème à partir de ma fonction de callback ?

Hors ligne

 

#6 19-07-2007 18:31:36

rod
Administrateur
Lieu: Tours
Date d'inscription: 01-03-2007
Messages: 97
Site web

Re: [Zend_Db][0.9.2] (débutant) comment dumper en debug ses requêtes ?

Julien pour prendre la défense de Damien je pense qu'il faisait référence à
ce qui est dit dans le manuel du Z-F : http://framework.zend.com/manual/en/zen … e.tostring

Damien, dans le manuel du Z-F, la méthode __toString() est appellée pour récupérer le résultat et non l'afficher. Quand tu as juste besoin de l'afficher tu peux te passer de l'appel à la méthode __toString() qui sera fait automatiquement.

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