Zend framework Zend框架如何回显总和查询的值

Zend framework Zend框架如何回显总和查询的值,zend-framework,sum,zend-db,Zend Framework,Sum,Zend Db,我为zend框架创建了一个查询,在该查询中,我尝试检索一列的总和,在本例中是名为“time”的列。这是我使用的查询: $this->timequery = $this->db_tasks->fetchAll($this->db_tasks->select()->from('tasks', 'SUM(time)')->where('projectnumber =' . $this->value_project)); $this->view-

我为zend框架创建了一个查询,在该查询中,我尝试检索一列的总和,在本例中是名为“time”的列。这是我使用的查询:

$this->timequery = $this->db_tasks->fetchAll($this->db_tasks->select()->from('tasks', 'SUM(time)')->where('projectnumber =' . $this->value_project));


$this->view->sumtime = $this->timequery;
回应这个问题告诉我这是对的。但我不能正确地反映结果。目前我正在使用:

echo $this->sumtime['SUM(time)'];
返回以下错误:

Catchable fatal error: Object of class Zend_Db_Table_Row could not be converted to string in C:\xampp\htdocs\BManagement\application\views\scripts\tasks\index.phtml  on line 46
第46行是我眼中的回声线

我已经花了两天时间研究如何解决这个问题,或者以不同的方式获得相同的结果。试图序列化该值,但也不起作用

是否有人知道如何实现数据库列的总和

非常感谢您的帮助


注意:zend framework非常新…

您需要的SQL可能是:

SELECT SUM(time) AS time_sum FROM tasks ...
不知道如何在Zend中执行此操作。然后:

echo $this->sumtime['time_sum'];

Zend_Db有一些很好的实用方法,比如fetchAll(您正在使用的)来获取不同类型的数据:

  • fetchAll-用于一组行
  • fetchRow-用于单行
  • fetchOne-对于单个单元格
最简单的是:

$sum = $db->fetchOne('SELECT SUM(time) FROM tasks WHERE project_number = ?', $this->value_project);
您也可以将Zend_Db_Select与这些方法一起使用,如您的问题中所示:

//note that the SUM(time) part is passed as a Zend_Db expression, as it is not a column
$select = $this->db_tasks->select()
                         ->from('tasks', new Zend_Db_Expr('SUM(time)'))
                         ->where('projectnumber =' . $this->value_project);

$this->timequery = $this->db_tasks->fetchOne($select);

这是因为Zend_Db_Select对象实现了一个toString方法来生成SQL。

已经尝试过了,但是我仍然得到了相同的错误。我猜这个查询很好,但我没有以正确的方式回显结果…嗨,大卫,首先谢谢!但是我仍然得到了一个错误:致命错误:调用未定义的方法应用程序\u Model\u DbTable\u Tasks::fetchOne()这是否意味着它在类中找不到fetchOne?再次将其更改为fetchRow或fetchAll会导致无法转换为字符串的错误。快到了!如果弄明白了:最后一句话必须是:$this->view->timequery=$this->db\u tasks->getAdapter()->fetchOne($select);谢谢!啊-我假设$this->db\u tasks是一个数据库适配器,而不是Zend\u db\u表。您使用getAdapter获得了正确的解决方案
$timequery= $timequeriestb->select(Zend_Db_Table::SELECT_WITH_FROM_PART)
                          ->columns('SUM(time) AS Totaltime')
                          ->where('projectnumber ='. $this->value_project));