Я не могу получить действительные данные из приведенных ниже SQL-инструкций Zend Framework, которые я использую в php и вызывается из сценария angularjs:
$where = new Where ();
$where->greaterThanOrEqualTo('user_id', '963');
$resultSet = $this->tableGateway->select(function(Select $select) use
($where){
$select->where($where);
$select->columns(array('date_added','datemonth' => new \Zend\Db\Sql\Expression("MONTH('date_added')"), 'count' => new \Zend\Db\Sql\Expression("COUNT(*)")));
$select->group('datemonth');
return $resultSet;
Мой угловой скрипт js выводит данные, как показано ниже:
success(function(response) {
for(var i in response.response) {
var tc = response.response[i];
alert("userdata date_added=" + tc['date_added'] + " datemonth=" + tc['datemonth'] + " count=" + tc["count"]);
}
И результаты как показано:
userdata date_added=2014-05-22 20:00:27 datemonth=undefined count=undefined
Может кто-нибудь сказать мне, если я неправильно использую выражение Zend \ Db \ Sql \ Expression или почему дата-месяц и число возвращаются неправильно? Я хочу иметь возможность получить количество записей по месяцам.
Обновление: мне удалось вывести вывод с сервера, и он показывает все поля в записи базы данных, но не для полей, созданных в функциях выражения Zend для datemonth и count. Ниже находится свалка. Кто-нибудь знает, почему поля Expression отсутствуют в дампе?
Код php:
echo "Resultset = " . $resultSet->date_added;
Дамп вышеуказанного кода:
Resultset = {"success":true,"response":[{"inputFilter":null,"user_id":0,"instagram_user_id":"","fbid":"","instagram_username":null, "full_name":"","profile_image":"","bio":"","website":"","media_count":0,"following_count":0,"followed_by_count":0,"like_count":0,"recommend_count":0,"date_added":"2014-05-22 20:00:27","flag_count":0,"date_updated":"","email":"","password":"","access_token":"","premium":0,"login_attempts":0,"status":0,"request_count":0,"request_date":""}]}
Вы можете попробовать это для предварительного просмотра вашего SQL-запроса:
$sql = new \Zend\Db\Sql\Sql($this->tableGateway->adapter);
echo $sql->getSqlStringForSqlObject($select);
Других решений пока нет …