Отзывы Magento - Когда они собираются агрегированы?

magento.stackexchange https://magento.stackexchange.com/questions/1346

  •  16-10-2019
  •  | 
  •  

Вопрос

Может ли кто -нибудь дать некоторое представление о том, когда отзывы попадают в rating_option_vote_aggregated стол? Я пытаюсь отфильтровать свои обзоры на основе четырех звезд или выше, и я хотел использовать percent_approved столбец для присоединения к таблице обзоров, однако не все последние утвержденные обзоры находятся в rating_option_vote_aggregated стол.

Нужно ли установить какой-то код одобрения после обзора, который вызывает $review->aggregate()?

Заранее спасибо!

Это было полезно?

Решение

Нет никакого волшебного кода, который автоматически объединяет данные обзора для клиентского программиста - вам нужно вызвать этот метод вручную после создания объекта проверки. Вы можете увидеть это на фронте в postAction Метод в

app/code/core/Mage/Review/controllers/ProductController.php

и различными методами на бэкэнд

app/code/core/Mage/Adminhtml/controllers/Catalog/Product/ReviewController.php

Я предполагаю, что происходит одна из двух вещей. Во -первых, у вас есть какой -то пользовательский код, который создает обзоры вручную, и не может позвонить aggregate правильно.

Во -вторых, есть определенный процент людей, которые пытаются просмотреть продукт, но из -за нагрузки на сервер или какой -либо другой проблемы запрос не удастся на полпути, так что

$review->setEntityId($review->getEntityIdByCode(Mage_Review_Model_Review::ENTITY_PRODUCT_CODE))
    ->setEntityPkValue($product->getId())
    ->setStatusId(Mage_Review_Model_Review::STATUS_PENDING)
    ->setCustomerId(Mage::getSingleton('customer/session')->getCustomerId())
    ->setStoreId(Mage::app()->getStore()->getId())
    ->setStores(array(Mage::app()->getStore()->getId()))
    ->save();

foreach ($rating as $ratingId => $optionId) {
    Mage::getModel('rating/rating')
    ->setRatingId($ratingId)
    ->setReviewId($review->getId())
    ->setCustomerId(Mage::getSingleton('customer/session')->getCustomerId())
    ->addOptionVote($optionId, $product->getId());
}

называется, но

$review->aggregate();

не является. Если бы я собирался обратиться к этому, я бы добавил где-нибудь задание Cron, которая составила список неагрегированных обзоров, а затем агрегировал их.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top