Php symfony 1.4和1.6:总和

Php symfony 1.4和1.6:总和,php,symfony-1.4,sum,propel,Php,Symfony 1.4,Sum,Propel,我正试图在propel中得到一个列的总和。我的代码 $c = new Criteria(); $c->add(valuePeer::OWNER_ID, $this->getId()); $c->addSelectColumn('SUM(' . valuePeer::VALUE . ') as total'); $c->addGroupByColumn(valuePeer::VALUE); $sum = valuePeer::DoSelect($c); 打印出$sum不

我正试图在propel中得到一个列的总和。我的代码

$c = new Criteria();
$c->add(valuePeer::OWNER_ID, $this->getId());
$c->addSelectColumn('SUM(' . valuePeer::VALUE . ') as total');
$c->addGroupByColumn(valuePeer::VALUE);

$sum = valuePeer::DoSelect($c);
打印出
$sum
不会返回任何内容(甚至不会返回空对象)。我只得到了
注意:第203行的未定义偏移量:1 in/../lib/model/om/BaseValue.php注意:第204行的未定义偏移量:2 in/../lib/model/om/BaseValue.php

我在建议的
::doselects($c)
和其他多个讨论中尝试了这种方法,但我得到了一个错误:
致命错误:在第39行的/../lib/model/Restauracia.php中调用未定义的方法ValuePeer::doselects()


有人能告诉我什么是正确的方法吗?

我刚刚找到了这个解决方案。就像我需要的那样

$c = new Criteria();
$c->clearSelectColumns();
$c->add(valuePeer::OWNER_ID, $this->getId());
$c->addSelectColumn('SUM(' . valuePeer::VALUE . ') as total');
//$c->addGroupByColumn(valuePeer::VALUE);

$sum = valuePeer::DoSelectStmt($c)->fetchAll(PDO::FETCH_COLUMN,0);
$sum = $sum[0];

为什么不使用新的ModelCriteria而不是旧的冗长的ModelCriteria呢

$sum = ValueQuery::create()
  ->select(array('total'))
  ->filterByOwnerId($this->getId())
  ->withColumn('SUM(Value.Value)', 'total')
  ->find();
将返回如下内容:

PropelArrayCollection(
  array('total' => 25)
)
试试这个(不要担心
findOne
SUM
仍然返回一行)

请注意,
getTotal()
是从withColumn的引用“total”生成的

约定为
get+Columnname
(camelcase)

$sum = ValueQuery::create()
  ->filterByOwnerId($this->getId())
  ->withColumn('SUM(Value.Value)', 'total')
  ->findOne()
  ->getTotal();