Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Je voudrais créer une méthode qui :
- execute une requete SQL
- donne le nombre de résultat de cette requête SQL
Mon idée était d'ajouter en première position :
- requete 1 : SELECT SQL_CAL_FOUN_ROWS *, .... FROM ....
- requete 2 : SELECT FOUND_ROWS()
Mais voila le problème c'est que MySQL demande à ce que ce SQL_CALC_FOUND_ROWS soit la première colonne souhaitée
mais je ne sais pas comment ajouter SQL_CALC_FOUND_ROWS en tant que première colonne
Je sais comment ajouté une colonne à une requête (grâce à columns())
mais pas préciser la position
MySQL refuse que je fasse
SELECT mes_champs, SQL_CALC_FOUND_ROWS * FROM ...
Hors ligne
Voila une idée mais je ne sais pas si elle fonctionne.
Mon $select est un objet Zend_Db_Select
$columns = $select->getPart(Zend_Db_Select::COLUMNS); $select->reset(Zend_Db_Select::COLUMNS); $select->addColumns(new Zend_Db_Expr('SQL_CAL_FOUN_ROWS')); $select->addColumns($columns);
Hors ligne
La méthode addColumns() n'existe pas
donc je suis obligé d'utiliser columns()
si je fais ça mon select ressemble à ça
SELECT SQL_CAL_FOUND_ROWS, a.Array, a.Array, a.Array, a.Array, a.Array, a.Array, a.Array, a.Array FROM ....
Hors ligne
Oui columns autant pour moi.
Qu'est-ce que tu récupères comme objets du getPart ?
Hors ligne
Un tableaux de tableaux
[lang=php]array(7) { [0]=> array(3) { [0]=> string(1) "table1" [1]=> string(11) "champ1" [2]=> NULL } [1]=> array(3) { [0]=> string(1) "table1" [1]=> string(5) "champ2" [2]=> string(8) "alias2" } [2]=> array(3) { [0]=> string(1) "table1" [1]=> string(10) "champ3" [2]=> string(3) "alias3" } [3]=> array(3) { [0]=> string(1) "table1" [1]=> string(10) "champ4" [2]=> string(4) "alias4" } }
Dernière modification par waghanza (10-01-2012 10:09:47)
Hors ligne
Arf pas terrible mon idée du coup..
J'ai l'impression qu'il est nécessaire que ton tableau soit sous la forme array($alias => $value) avant de le passer à la méthode columns. Encore moins propre que prévu pour le coup.
Par contre, je suis un peu surpris que ce que l'on récupère via le getPart() ne soit pas réutilisable par la suite.
J'espère que d'autres personnes ont de meilleures idées ^^
Hors ligne
Pages: 1