Zend framework groupe par
Je suis en train de faire un groupe à l'aide de Zend framework. Voici mon code:
$table = new TableClass();
$select = $table->select();
$select->from ("table", array("date", "column1" => "sum(column1)"));
$select->group ( array ("date") );
$results = $table->fetchAll ($select);
$result = $results[0];
$date = $result->date;
$column1 = $result->column1;
TableClass s'étend 'Zend_Db_Table_Abstract'.
Je peux voir la requête en regardant le mysql query log. La requête est bien formé - colonne1 est nommée dans la requête et les résultats semblent corrects si j'exécute la requête mysql workbench.
Je ne peut pas accéder aux données en "colonne1' - j'ai toujours cette exception:
Uncaught exception 'Zend_Db_Table_Row_Exception' with message 'colonne Spécifiée "colonne1" n'est pas dans la ligne'
Je peux toutefois accéder à la colonne de date sans problème.
J'ai essayé:
-
accès aux colonnes par des index de tableau:
$result[0]
mais vous obtenez une exception (ne peut pas accéder à des colonnes de l'index). -
pas à l'aide d'un alias de colonne:
$select->from ("table", array("date", "somme(colonne1)"));
$colonne1 = $result["somme(colonne1)"];
mais vous obtenez une exception (qui n'colonne "somme(colonne1)"). -
lancer dans une Zend_Db_Expr:
"colonne1" => nouvelle Zend_Db_Expr ( "la somme(colonne1)" )
mais cela ne l'aide pas.
Quelques autres exemples que j'ai vu suggèrent l'utilisation de la colonne des noms sans les fonctions d'agrégation, c'est à dire. "colonne1" au lieu de "sum(colonne1)" mais ça ne semble pas à moi d'être la réponse de la requête n'a pas toutes les fonctions d'agrégation en elle de sorte que mysql ne savez pas quoi faire avec elle.
Toute aide appréciée.
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, un petit conseil pour travailler avec Zend_Db_Select (et, par extension, Zend_Db_Table_Select), vous pouvez visualiser le code SQL généré par l'invocation de la méthode toString. Il est essentiel de vérifier que votre code génère la requête appropriée avant de travailler avec un ensemble de résultats:
Ou tout simplement
J'ai écrit le script de test suivant à l'aide de votre exemple et n'ont pas de problèmes:
Utilisation Zend_Debug::dump($result); contrôler les données à l'intérieur de la Zend_Db_Table_Row si nécessaire.
Dans mon cas, le SQL généré est comme suit: