Propel和SQL聚合函数

时间:2013-01-24 13:37:31

标签: orm symfony-1.4 propel

以下SQL查询在Propel(1.4)中的外观如何?

SELECT SUM(`price_equipment`) FROM `order_equipment` WHERE `order_id` = 57072;

我使用谷歌进行了一些研究,但我找到的所有例子都考虑了计数GROUP BY子句。我只需要一个值。

2 个答案:

答案 0 :(得分:6)

在此处添加group by语句不会有什么坏处,因为它将有助于汇总您的语句,只需按orderId进行分组。如果你不想要小组,只需删除该行。

$value = OrderEquipmentQuery::create()
          ->withColumn('SUM(price_equipment)')
          ->filterByOrderId(57072)
          ->groupByOrderId()
          ->find()

这就是你在1.6中的表现,对于1.4,我会看一下j0k给出的例子,但请记住,在查询中按orderId分组可能是安全的

答案 1 :(得分:1)

我认为Propel 1.4的语法类似于:

$c = new Criteria();
$c->add(OrderEquipmentPeer::ORDER_ID, $orderId);
TestPeer::addSelectColumns($c);
$c->addAsColumn('price_sum', 'SUM('.OrderEquipmentPeer::PRICE_EQUIPMENT.')');
$results = OrderEquipmentPeer::doSelectStmt($c);

很难找到1.4的文档,因为他们在propelorm.org上杀了旧的wiki,但我认为这是对的。正如我在其他评论中所说,您应该考虑升级到Propel 1.6,因为它具有更多功能和更好的稳定性。据我所知,1.4分支根本没有维护。