Php symfony 1.4和1.6:总和
我正试图在propel中得到一个列的总和。我的代码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不
$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();