Ric*_*aaf 3 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;
Run Code Online (Sandbox Code Playgroud)
回应查询告诉我这是对的.但我无法正确回应结果.目前我正在使用:
echo $this->sumtime['SUM(time)'];
Run Code Online (Sandbox Code Playgroud)
返回以下错误:
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
Run Code Online (Sandbox Code Playgroud)
第46行是我视图中带回声的行.
我现在一直在寻找如何解决这个问题的两天,或者以不同的方式获得相同的结果.试图序列化该值,但这也不起作用.
有谁知道如何实现数据库列的总和?
任何帮助都非常有用!
注意:zend框架很新...
Zend_Db有一些很好的实用方法,比如fetchAll(你正在使用它)来获取不同类型的数据:
最简单的:
$sum = $db->fetchOne('SELECT SUM(time) FROM tasks WHERE project_number = ?', $this->value_project);
Run Code Online (Sandbox Code Playgroud)
你可以在这些方法中使用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);
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为Zend_Db_Select对象实现了一个toString方法,以生成SQL.