4

推進力で列の合計を取得しようとしています。私のコード

$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も何も返されません (空のオブジェクトでさえありません)。私が得るのはNotice: Undefined offset: 1 in /.../lib/model/om/BaseValue.php on line 203 Notice: Undefined offset: 2 in /.../lib/model/om/BaseValue.php on line 204

ここ::DoSelectRS($c)で提案されているように、他の複数の議論でこのアプローチを試みましたが、エラーが発生しました: .Fatal error: Call to undefined method ValuePeer::DoSelectRS() in /.../lib/model/Restauracia.php on line 39

誰かがこれに対する正しいアプローチを教えてもらえますか?

4

3 に答える 3

8

古い冗長な ModelCriteria の代わりに、新しい ModelCriteria を使用しないのはなぜですか?

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

次のようなものが返されます。

PropelArrayCollection(
  array('total' => 25)
)
于 2012-09-07T07:51:21.420 に答える
3

私はちょうどこの解決策を見つけました。それは私が必要としていたように動作します。

$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];
于 2012-09-06T21:00:45.703 に答える
2

これを試してください (心配しないでください。とにかく 1 行を返します) findOneSUM

getTotal()withColumn の参照 'total' から生成されることに注意してください。

規約はget+Columnname( camelcase )

$sum = ValueQuery::create()
  ->filterByOwnerId($this->getId())
  ->withColumn('SUM(Value.Value)', 'total')
  ->findOne()
  ->getTotal();
于 2014-07-30T14:39:58.563 に答える