php - Zend_Db_Table_Row 类的对象无法转换为字符串

标签 php mysql zend-framework

当我运行以下命令时,我在标题中收到错误消息:

$year = date('Y');
        $month = date('n');
        $day = date('j') - 3;
        $week = date('W') - 1;

        $select = "SELECT IF( station_name =  '',  'Unknown', station_name ) station_name, station_name as db_name, sum(case when year(print_date) = $year then print_pages end) as yearpages, sum(case when (month(print_date) = $month and year(print_date) = $year) then print_pages end) as monthpages, sum(case when (day(print_date) = $day and year(print_date) = $year and month(print_date) = $month) then print_pages end) as daypages, sum(case when (week(print_date) = $week AND year(print_date) = $year AND month(print_date) = $month) then print_pages end) as weekpages
                    FROM `file_prints`
                    GROUP BY station_name;";

        $rows = $_userTable->getAdapter()->fetchAll($select);
        foreach($rows as $key => $row)
        {
            $oModelStation = new Application_Model_PrintStation();
            $fPrintsModel = new Application_Model_FilePrints();
            $station = $oModelStation->fetchRow($oModelStation->select()->where('name = ?', $row['station_name']));
            $row['weekpages'] = $fPrintsModel->fetchRow($fPrintsModel
                ->select(array('sum(print_pages) as weekpages'))
                ->where('station_name = ?', $row['station_name']));
                ->where('year(print_date) = ?', $year)
                ->where('week(print_date) = ?', $week));

            echo $row['weekpages'];

错误可以追溯到最后一行,即此示例代码(echo $row['weekpages'])。我已经通过初始 $select SQL 查询的回显测试了结果,它似乎令人满意,并且我尝试删除 fetchRow 执行中的各种 where 条件,以查看是否有一个条件是罪魁祸首,但我不断收到相同的错误消息。

此外,当我使用此代码执行 var_dump($row) 时,我看到 weekpages 的键指向 Zend 对象,而日页、月页和年页的所有其他键都指向包含数值的字符串。

最佳答案

错误消息告诉您问题是什么。 fetchRow() 返回一个 Zend_Db_Table_Row 对象,然后将其存储在索引“weekpages”的数组中。我不确定您打算如何处理检索到的行中的数据,但您可以尝试使用 ->toArray() 将行对象转换为数组或访问行对象的各个字段,如下所示:

echo $row['weekpages']->weekpages;

假设您打算让 $row['weekpages'] 保存行对象,尽管您选择的索引字符串让我认为情况可能并非如此。

为了额外说明,$row['weekpages'] 的值是行对象,并且您在查询中使用别名的列也称为“weekpages”。

关于php - Zend_Db_Table_Row 类的对象无法转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30145140/

相关文章:

PHP unlink() 处理异常

php - 搜索结果的多样性

php - 将 Javascript 发布到 PHP 文件?

php - fputcsv 写入空白文件

mysql - excel导入数据库时​​出现 'Invalid datetime format'如何修复?

javascript - PHP、AJAX 和 MySQL - 从多个 <select> 更新页面

zend-framework - 在 Zend Framework 中使用 DbUnit 扩展进行数据库测试时缺少抽象方法错误

zend-framework - 如何为我的网站构建小部件

mysql - Application_Model_Rawdata 类的对象无法转换为字符串

php - 如何为事件菜单项提供不同的样式