Zend Framework如何回显SUM查询的值

时间:2010-04-15 09:31:49

标签: 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->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框架很新......

3 个答案:

答案 0 :(得分:9)

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。

答案 1 :(得分:1)

$timequery= $timequeriestb->select(Zend_Db_Table::SELECT_WITH_FROM_PART)
                          ->columns('SUM(time) AS Totaltime')
                          ->where('projectnumber ='. $this->value_project));

答案 2 :(得分:0)

您想要的SQL可能是:

SELECT SUM(time) AS time_sum FROM tasks ...

不确定如何在Zend中执行此操作。然后:

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