magento中对于评论,系统内部建了6个数据表,这里我们使用我们需要的进行联表查询筛选出对应顾客的评价列表,代码及封装的方法如下:
$isReview = $this->getRequest()->getParam('is_review', 0);
$review = Mage::helper('fun_review');
$page_size = $this->getRequest()->getParam('page_size');
$page_index= $this->getRequest()->getParam('page_index');
$orderItemCollection = $review->getReviewListByCustomerId($this->_customer_id, $isReview,$page_index,$page_size);
/**
* 获取顾客评论列表
*
* @param int $customerId
* @param boolean $reviewed
* @param number $page
* @param number $pageSize
* @return array()
*/
public function getReviewListByCustomerId($customerId, $reviewed = false, $page = 1, $pageSize = self::REVIEW_PAGE_SIZE)
{
$orderItems = Mage::getResourceModel ( 'sales/order_item_collection' );
$orderTable = $orderItems->getTable ( 'sales/order' );
$customerId = ( int ) $customerId;
$page = ( int ) $page;
$pageSize = ( int ) $pageSize;
$status = self::REVIEW_ORDER_STATUS;
$orderItems->removeAllFieldsFromSelect ();
$orderItems->addFieldToSelect ( 'product_id' );
$orderItems->addFieldToSelect ( 'is_reviewed' );
$orderItems->addFieldToFilter ( 'is_reviewed', array (
'eq' => intval ( $reviewed )
) );
$orderItems->getSelect ()->joinInner ( array (
'o' => $orderTable
), "o.entity_id = main_table.order_id and o.customer_id = {$customerId} and o.status = '{$status}' ", null );
$orderItems->setOrder ( 'item_id', 'DESC' );
$orderItems->setPage ( $page, $pageSize );
$reviewList = $orderItems->load ();
return $reviewList;
}