質問

誰かがレビューが入ったときの洞察を提供できますか rating_option_vote_aggregated テーブル? 4つ以上の星に基づいてレビューをフィルタリングしようとしていますが、 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

私の推測では、2つのことが起こっていることがあります。 1つ目は、レビューを手動で作成し、電話をかけないカスタムコードがあることです。 aggregate 正しく。

2つ目は、製品をレビューしようとする人の一定の割合があることですが、サーバーの負荷やその他の問題のために、要求は途中で失敗します。

$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