2010-04-29 10 views
2

J'ai une table pgsql avec les champs id, identifiant, nom.Zendframework/PgSQL fetchAll orderby

id serial NOT NULL, 
    identifier character varying(16), 
    name character varying(128) 

Je souhaite fetchAll valeurs de l'identificateur de rang de la table.

mais l'identifiant est ayant des valeurs

12, 100, 200, 50 

et après $table->fetchAll(null, 'identifier'); est de donner le résultat

100, 12, 200, 50 

mais je veux le résultat que

12, 50, 100, 200 

ou en utilisant une requête directe?

Répondre

1

Je pense que, cette requête va travailler pour vous

select * from tablename order by tableField::int 
+0

aussi table- $> fetchAll (null, '(identifiant :: int)'); travaillera avec zend tnx :) – viMaL

0

Essayez ceci:

$table->fetchAll(null, '(identifier+0)'); 

L'opération +0 devrait PostgreSQL jeter la valeur d'identifiant à un entier, il trie par ordre numérique au lieu de l'ordre alphabétique.

La présence de parenthèses devrait donner à Zend Framework un indice pour traiter l'argument de tri comme une expression, pas comme un nom de colonne.