Я пытаюсь сделать группу с помощью рамки Zend. Вот мой код:Zend framework group
$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 расширяет 'Zend_Db_Table_Abstract'.
Я могу просмотреть запрос, посмотрев журнал запросов mysql. Запрос хорошо сформирован. Column1 указан в запросе, и результаты выглядят корректно, если я запускаю запрос в workbench mysql.
Я не могу получить доступ к данным в «column1» - я всегда получаю это исключение:
Uncaught исключение «Zend_Db_Table_Row_Exception» с сообщением «Заданный столбец„column1“не в строке»
я могу однако доступ к столбцу даты без проблем.
Я пробовал:
доступ столбцов по индексу массива: $ результата [0] но вы получите исключение (не может получить доступ к столбцам по индексу).
не использует псевдоним столбца: $ select-> from ("table", array ("date", "sum (column1)")); $ column1 = $ result ["sum (column1)"]; , но вы получаете исключение (нет такого столбца «sum (column1)»).
бросали в Zend_Db_Expr: "column1" => новый Zend_Db_Expr ("сумма (COLUMN1)") , но это не помогает.
Некоторые другие примеры, которые я видел, предполагают использование имен столбцов без агрегатных функций, т.е. «column1» вместо «sum (column1)», но это не кажется мне ответом - запрос не имеет каких-либо агрегатных функций, поэтому mysql не будет знать, что с ним делать.
Любая помощь приветствуется.
Я попробовал ваш код, и я была такая же проблема, как и раньше, даже если он работает для вас. Это заставило меня подумать, что с моей настройкой что-то не так. Я использую Zend Studio 7.2 для разработки. Когда я запускаю либо ваш, либо мой код в PHP 5.2.10 в Zend Studio, я получаю проблемы, которые я изложил. Когда я запускаю код под PHP 5.3.0, у меня нет проблем. Возможно, PDO не работает так хорошо в PHP 5.2? Проблема решена - спасибо за вашу помощь Дэвид! – 2010-06-20 00:41:46
Я проверил его с 5.3, но я обычно работаю под 5.2. Существуют некоторые проблемы mysql.dll, если вы используете MySQL 5.1 с PHP 5.2, но они обычно приводят к общему сбою! –
Хорошее предложение по проверке SQL.I обнаруживает, что API-интерфейс Zend DB API часто генерирует фальшивый SQL, который не делает того, что вы ожидаете или может разумно хотеть (особенно, когда задействовано несколько объединений). У меня никогда не было этой проблемы с каким-либо другим API-интерфейсом DB, это единственное, что я делаю в Zend, я думаю, это действительно глючит. –