Сложить значения определенных столбцов из БД 2.X

Создать SQL запрос

 
Посетитель
small user social cms
Медаль
Сообщений: 232
Привет.

Необходимо сложить значения определенных столбцов из БД, сделать это можно запросом:

Код PHP:
  1. SELECT SUM(`column_name`) FROM `table_name`;
Но такого метода в iCMS 2 нет

Создал метод в модели контроллера компонента:
Код PHP:
  1.  
  2. public function getSum($table_name, $by_field) {
  3.  
  4. $sql = "SELECT SUM({$by_field}) FROM {#}{$table_name}";
  5.  
  6. $result = $this->db->query($sql);
  7.  
  8. return $result;
  9.  
  10. }
  11.  
Как получить модель ядра? Или код:

Код PHP:
  1. $this->db->query($sql);
будет работать?

Возможно есть другое решение?
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2644
$this->model->db->query($sql);
Реклама
cms
Посетитель
small user social cms
Медаль
Сообщений: 232
Ris:
$this->model->db->query($sql);

После такого страница не загружается!
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2644
Вадим Нарочный,
Так это уже в модели, а модель любого контроллера extends cmsModel
Поэтому просто, как Вы и написали:
$this->db->query($sql);
Посетитель
small user social cms
Медаль
Сообщений: 232
Разобрался, нужно было добавить:
Код PHP:
  1. $item = $this->db->fetchAssoc($result);
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2644
Вадим Нарочный,
Вы вообще-то зря системные файлы курочите.
Лучше найдите в модели, фронтенде или экшене вашего компонента вызов хука (что-то типа cmsEventsManager::hook(') и сделайте православный хук, в котором и добавьте функцию вычисления суммы полей.
Посетитель
small user social cms
Медаль
Сообщений: 232
Ris:

Вадим Нарочный,
Вы вообще-то зря системные файлы курочите.
Лучше найдите в модели, фронтенде или экшене вашего компонента вызов хука (что-то типа cmsEventsManager::hook(') и сделайте православный хук, в котором и добавьте функцию вычисления суммы полей.

Вы внимательно прочитайте, что я написал:

Создал метод в модели контроллера компонента

Так что системные файлы никто не трогает!
Редактировалось: 1 раз (Последний: 9 сентября 2017 в 15:52)
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 3546
Ris:
сделайте православный хук
По православному, надо делать как-то так
Код PHP:
  1. public function getSum($table_name, $by_field) {
  2. return $this->select('SUM('.$by_field.')', 'summ')->get($table_name);
  3. }
а потом сумму искать в summ.
Посетитель
small user social cms
Медаль
Сообщений: 232
Loadырь:

Ris:
сделайте православный хук
По православному, надо делать как-то так
Код PHP:
  1. public function getSum($table_name, $by_field) {
  2. return $this->select('SUM('.$by_field.')', 'summ')->get($table_name);
  3. }
а потом сумму искать в summ.

спасибо. Ну тогда уж:

Код PHP:
  1. selectOnly
Посетитель
small user social cms
Медаль
Сообщений: 232
Всем спасибо, сделал так:

Код PHP:
  1. public function getVotesSum($table_name, $by_field) {
  2.  
  3. return $this->selectOnly('SUM('.$by_field.')', 'summ')->getItem($table_name);
  4.  
  5. }
В начало страницы
Предыдущая темаСледующая тема Перейти на форум: