如何使用magento中的集合(USING MAGENTO STANDARD)对列值进行求和

时间:2014-08-19 17:05:26

标签: magento

我的桌子是这样的,我的收藏是 $ testmodel =法师:: getModel(试验/ P1) - > getCollection();

     my database table is below.

    id  cat_id  rate   p_id
     1    1      4      1
     2    1      2      1
     3    1      3      2
     4    2      5      3
     5    2      3      1 

我希望使用集合

在magento中输出这样的内容
       cat_id  rate   count_category
         1      9       3
         2      8       2 

2 个答案:

答案 0 :(得分:4)

我发现我的问题正确代码在

之下
$testmodel = Mage::getModel('test/p1')
                ->getCollection()
                ->addFieldToSelect('rate')
                ->addFieldToSelect('cat_id');

            $testmodel ->getSelect()
                ->columns('SUM(rate) as total,COUNT(*) AS countCategory')
                ->group('cat_id');

答案 1 :(得分:0)

如果你使用mysql4作为这个模型资源类,那么转到

<强>模型/ Mysql4 / P1 / Collection.php

此处需要添加功能

public function addGroupByCatId(){
      $subSelect = clone $this->getSelect();
      $CountsubSelect = clone $this->getSelect();

    $subSelect->reset()
        ->from(array('rev' => 'youtable', 'SUM( rev.rate)')
        ->where('main_table.cat_id = rev.cat_id');

        $CountsubSelect->reset()
        ->from(array('countrev' => 'youtable'),'COUNT(countrev.cat_id)')
        ->where('main_table.cat_id = countrev.cat_id');



    $this->getSelect()
        ->join(
            array('r' =>  'youtable'),
            'main_table.id = r.id',
            array(
                'review_sum'    => new Zend_Db_Expr(sprintf('(%s)', $subSelect)),
                'count_category' =>  new Zend_Db_Expr(sprintf('(%s)', $CountsubSelect)),
                ))
        ->group('main_table.cat_id');
        return $this;

}

OR:资源模型然后转到

如果你使用mysql4作为这个模型资源类,那么转到

<强>模型/资源/ P1 / Collection.php

此处需要添加功能

public function addGroupByCatId(){
      $subSelect = clone $this->getSelect();
      $CountsubSelect = clone $this->getSelect();

    $subSelect->reset()
        ->from(array('rev' => 'youtable', 'SUM( rev.rate)')
        ->where('main_table.cat_id = rev.cat_id');

        $CountsubSelect->reset()
        ->from(array('countrev' => 'youtable'),'COUNT(countrev.cat_id)')
        ->where('main_table.cat_id = countrev.cat_id');



    $this->getSelect()
        ->join(
            array('r' =>  'youtable'),
            'main_table.id = r.id',
            array(
                'review_sum'    => new Zend_Db_Expr(sprintf('(%s)', $subSelect)),
                'count_category' =>  new Zend_Db_Expr(sprintf('(%s)', $CountsubSelect)),
                ))
        ->group('main_table.cat_id');
        return $this;

}

最终你得到了

 $testmodel=Mage::getModel(test/p1)->getCollection();
 $testmodel->addGroupByCatId();