Pregunta

¿Alguien puede proporcionar una cierta penetración para cuando reseñas conseguir poner en la mesa rating_option_vote_aggregated? Estoy tratando de filtro a través de mis opiniones sobre la base de cuatro estrellas o superior y que estaba buscando a utilizar la columna percent_approved para unirse con la mesa de examen, sin embargo, no todas las últimas críticas son aprobados en la tabla rating_option_vote_aggregated.

¿Es necesario instalar algún tipo de código de revisión posterior aprobación que las llamadas $review->aggregate()?

Gracias de antemano!

¿Fue útil?

Solución

No hay código mágico que agrega automáticamente los datos de la revisión para un programador cliente - es necesario llamar a este método de forma manual después de que se crea un objeto de revisión. Esto se puede ver en la interfaz en el método postAction en

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

y en varios métodos en el backend

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

Mi conjetura sería de ahí una de dos cosas que suceden. La primera es que hay algún código personalizado que está creando comentarios de forma manual, y no llamar aggregate correctamente.

La segunda es que hay un cierto porcentaje de personas que tratan de revisar un producto, pero debido a la carga del servidor o algún otro problema, la solicitud falla a mitad de camino a través de tal forma que

$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());
}

se llama, pero

$review->aggregate();

no lo es. Si iba a acercarse a la fijación de esto, me gustaría añadir una tarea de cron que en algún lugar construyó una lista de las opiniones no agregados, y luego se agregan ellos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top