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


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

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

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

Author: tomatksand, 2013-03-13

1 answers

Нет волшебного кода, который автоматически агрегирует данные проверки для клиентского программиста - вам нужно вызвать этот метод вручную после создания объекта проверки. Вы можете увидеть это на интерфейсе в методе 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, которое составляло список неагрегированных обзоров, а затем объединяло их.

 6
Author: Alan Storm, 2013-03-14 02:14:18