Domanda

Qualcuno può fornire qualche informazione per quando le recensioni vengono messe nella tabella rating_option_vote_aggregated? Sto cercando di filtro attraverso le mie recensioni sulla base di quattro stelle o superiore e stavo cercando di utilizzare la colonna percent_approved per unirsi con la tabella di revisione, tuttavia non tutte le ultime recensioni approvati sono nella tabella rating_option_vote_aggregated.

Non abbiamo bisogno di installare una sorta di codice di post-recensione-approvazione che le chiamate $review->aggregate()?

Grazie in anticipo!

È stato utile?

Soluzione

Non c'è codice magico che aggrega automaticamente i dati di revisione per un programmatore client - è necessario chiamare questo metodo manualmente dopo viene creato un oggetto recensione. Si può vedere questo sul frontend a nel metodo postAction in

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

e in vari metodi sul backend

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

La mia ipotesi sarebbe di lì una delle due cose che accadono. La prima è che hai un po 'di codice personalizzato che sta creando recensioni manualmente, e non riuscendo a chiamare correttamente aggregate.

Il secondo è che c'è una certa percentuale di persone che tentano di rivedere un prodotto, ma a causa del carico del server o qualche altro problema, la richiesta non riesce a metà in modo che

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

si chiama, ma

$review->aggregate();

non è. Se stavo per avvicinarsi a fissare questo, mi piacerebbe aggiungere un qualche job cron che ha costruito un elenco di recensioni non aggregati, e quindi aggregati loro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top