繁体   English   中英

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

[英]Object of class Zend_Db_Table_Row could not be converted to string

运行以下命令时,标题中显示错误消息:

$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)时,我看到用于周页的键指向Zend对象,而用于日​​页,月页和年页的所有其他键都指向包含数字值的字符串。

错误消息告诉您问题出在哪里。 fetchRow()返回一个Zend_Db_Table_Row对象,然后将其存储在索引“ weekpages”的数组中。 我不确定您打算对检索到的行中的数据做什么,但是您可以尝试通过-> toArray()将行对象转换为数组,或者像这样访问行对象的各个字段:

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

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

为了进一步说明,$ row ['weekpages']的值是行对象,在查询中具有别名的列也称为“ weekpages”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM