Нет ли более изящного способа получить рейтинг товара?

#
Нет ли более изящного способа получить рейтинг товара?
Здравствуйте!
Необходимо получить в списке рейтинг для каждого товара, добавил на shop_item.onBeforeGetXml такой код:

$oComments = Core_Entity::factory('Comment');
        $oComments
           ->queryBuilder()
           ->join('comment_shop_items', 'comments.id', '=', 'comment_shop_items.comment_id')
           ->join('shop_items', 'shop_items.id', '=', 'comment_shop_items.shop_item_id')
           ->where('shop_id', '=', 3)
           ->where('shop_item_id', '=', $object->id)
           ->where('comments.active', '=', 1);
          
        $gradeSum=0;
        $aComments = $oComments->findAll();
        $gradeCount=count($aComments);
        if ($gradeCount > 0) {
        foreach($aComments as $oComment)
            {
                $gradeSum+=$oComment->grade;
            
            }
            $avgrade = round($gradeSum / $gradeCount,1);
            $object->addXmlTag('avgrade', $avgrade);
        }



Всё работает конечно, но выглядит не очень. Есть ли базовый функционал, который выполняет ту же задачу? Что-то типа супер метода getRatingShopItem() ?

И касаемо нагрузки, стоит ли огранить поля при выборке комментариев при помощи Core_QueryBuilder::select, ведь нужны конкретно только айдишники и grade? И есть ли возможность получить итоговый sql запрос для такой операции и возможно время её выполнения чтобы как-то смотреть на результат?
Ускорение сайтов / Любые работы по сайту / Обращайтесь в nivaks-studio.ru
#
Re: Нет ли более изящного способа получить рейтинг товара?
У контроллера показа магазина это comments(TRUE) у объекта товара showXmlComments(TRUE) средний рейтинг пойдет в тег comments_average_grade

Как смотреть итоговые sql запросы https://www.hostcms.ru/documentation/step-by-step/top-panel/sql/
«Не выходи из комнаты, не совершай ошибку…»
#
Re: Нет ли более изящного способа получить рейтинг товара?
llirik писал(а):
У контроллера показа магазина это comments(TRUE)

Но он выводит и все комментарии, что абсолютно не нужно. Мне же нужно только итоговое значение рейтинга для товара. Я правильно понимаю, что при этом варианте будет достаточно убрать комментарии через forbiddenTags и оставить только comments_average_grade ?
Ускорение сайтов / Любые работы по сайту / Обращайтесь в nivaks-studio.ru
Авторизация