Yii和ActiveRecord按计数分组


Yii and ActiveRecord Group by Count

我对Yii比较陌生,想做一点实验。我在网上到处看了看,完全不知道该怎么办。我已经掌握了Yii的基本知识,但我认为这是相当先进的,或者我只是愚蠢。

我有一个MYSQL表,里面有一个购买物品的列表。该表将CUSTOMER_ID作为主字段,每个CUSTOMER-ID可能具有多个ITEM。我想通过TRANSACTION_ID进行计数,然后根据以下逻辑进行评估:

1) IF myCount = 1 then businessType = 'New'; 
2) If myCount = 2 then businessType = 'Repeat'; 
3) If myCount > 2 then businessType = '2+ Repeat'; 

然而,我不确定在哪里以及如何才能做到这一点?afterSave()??还是在控制器中?当我将这些数据输入Highcharts时,我必须将查询结果输入GROUPED CActiveDataProvider对象。

我的分组需要如下(从最低级别到最高级别):

businessType->store->item->{Count(ITEM), SUM(Cost)}

不幸的是,我无法在表中添加变量,我真的很想在不需要的情况下实现这一点。感谢您的帮助!

要做到这一点,您需要使用CDbWriter在CActiveDataProvider中对结果进行分组。请参阅此处http://www.yiiframework.com/doc/api/1.1/CDbCriteria#group-细节。你需要在你的控制器中实现它,就像这样;
$criteria = new CDbCriteria;
$criteria->select = 'the columns to select, and maybe SUM()';
$criteria->group = 'columns to group by';
etc
etc
$dataProvider = new CActiveDataProvider('model name', $criteria);

在不知道数据库的确切实现的情况下,我只能给出一个一般的例子,但您应该会发现这样的东西对您有用。我不知道如何将您谈论的分组为businessType->store->item->{Count(ITEM), SUM(Cost)},因为您还没有显示数据库和模型结构。