Используйте CActiveRecord, чтобы получить сумму столбца - PullRequest
7 голосов
/ 21 апреля 2011

1) Есть ли способ получить сумму целочисленного столбца с помощью CActiveRecord в Yii?

В противном случае мне придется получить данные столбца и суммировать их на стороне сервера.

2) Я также предполагаю, что получение суммы с помощью одного SQL-запроса происходит быстрее, чем получение столбца данных и суммирование на сервере с помощью php.Если производительность имеет значение, должен ли сервер mysql выполнять такую ​​операцию или просто позволить php-серверу позаботиться об этом.

Пожалуйста, советуйте.

Ответы [ 2 ]

10 голосов
/ 21 апреля 2011

1) Я так не думаю, и не имеет смысла использовать CAvtiveRecord таким образом, если только вы не хотите иметь отношение STAT. Допустим, у вас есть модель «Вопрос» и модель «Ответ», и ответы относятся к вопросу. Вы можете составить статистическое отношение и реализовать его в «Вопросе» следующим образом:

Public function relations() {
    return array(
        'answerSum'=>array(self::STAT, 'Answer', 'questionId', 'select' => 'SUM(answerSum.someFieldFromAnswerTableToSum)')
    );
}

Затем вы получаете информацию: $ question-> answerSum; где $ question является экземпляром Question с отношениями, объявленными как выше.

2) Это вопрос количества данных. Я бы лично выбрал SQL, потому что он способен обрабатывать большее количество наборов данных и, следовательно, экономит будущее.

6 голосов
/ 21 апреля 2011

Попробуйте

$user = User::model()->findBySql('select sum(`you_column`) as `sum` from user', array());
var_dump($user->sum);

В модели должно присутствовать поле суммы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...