Yii и группа активных записей по количеству
Я относительно новичок в Yii и хотел бы немного поэкспериментировать. Я просмотрел весь Интернет и совершенно не представляю, как к этому подойти. Я освоил основы Yii, но я думаю, что это довольно продвинутый процесс, или я просто глуп.
У меня есть таблица MYSQL со списком купленных товаров. В этой таблице в качестве основного поля указан идентификатор CUSTOMER_ID, причем каждый идентификатор CUSTOMER_ID может содержать более одного ЭЛЕМЕНТА. Я хотел бы сделать подсчет ПО TRANSACTION_ID, а затем оценивать как в соответствии со следующей логикой:
1) IF myCount = 1 then businessType = 'New';
2) If myCount = 2 then businessType = 'Repeat';
3) If myCount > 2 then businessType = '2+ Repeat';
Однако я не уверен, где и как было бы лучше всего это сделать? После сохранения()?? Или в контроллере? Я должен получить результат запроса в СГРУППИРОВАННЫЙ объект CActiveDataProvider, когда я передаю эти данные в Highcharts.
Моя группировка должна выглядеть следующим образом (от самого низкого уровня до самого высокого):
businessType->store->item->{Count(ITEM), SUM(Cost)}
К сожалению, я не могу добавить переменную в таблицу и действительно хотел бы добиться этого, не имея к. Любая помощь приветствуется!
1 answers
Для этого вам нужно будет использовать CDbCriteria для группировки результатов в CActiveDataProvider. Смотрите здесь http://www.yiiframework.com/doc/api/1.1/CDbCriteria#group-detail . Вам нужно будет реализовать это в своем контроллере примерно так;
$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)}
, так как вы этого не сделали показана структура вашей базы данных и модели.