Fecshop 代码示例:按照产品评论数倒序分页取产品的详细代码

技术分享 · Fecmall · 于 5年前 发布 · 1903 次阅读

按照评论数排序取产品

思路:

1.产品model:https://github.com/fecshop/yii2_fecshop/blob/master/models/mongodb/Product.php

可以看到字段:

'review_count',                  //评论总数
'reviw_rate_star_average_lang',  //(语言)评论平均评分
'review_count_lang',             //(语言)评论总数

2.产品表(mongodb)product_plat,如果产品被评论就会出现字段

"review_count": NumberInt(2),   // 产品总评论数
   "reviw_rate_star_average_lang": {
     "reviw_rate_star_average_lang_en": 5 
  },
   "review_count_lang": {  // 产品在各个语言下的评论数
     "review_count_lang_en": NumberInt(2)   // 英语store下的评论数
  },

因此,如果可以按照 review_count 取产品数据

product service:https://github.com/fecshop/yii2_fecshop/blob/master/services/product/ProductMongodb.php

可以看到如何查询的方法:

/*
     * example filter:
     * [
     * 		'numPerPage' 	=> 20,
     * 		'pageNum'		=> 1,
     * 		'orderBy'	=> ['_id' => SORT_DESC, 'sku' => SORT_ASC ],
     * 		'where'			=> [
                ['>','price',1],
                ['<=','price',10]
     * 			['sku' => 'uk10001'],
     * 		],
     * 	'asArray' => true,
     * ]
     */
    public function coll($filter = '')
    {
        $query = $this->_productModel->find();
        $query = Yii::$service->helper->ar->getCollByFilter($query, $filter);
        return [
            'coll' => $query->all(),
            'count'=> $query->limit(null)->offset(null)->count(),
        ];
    }

实现:评论总数(不区分语言store)倒序分页查询产品

$enableStatus = Yii::$service->product->getEnableStatus();
$filter = [
	'numPerPage' 	=> 20,
	'pageNum'		=> 1,
	'orderBy'	=> ['review_count' => SORT_DESC ],
	'where'			=> [
		['status' => $enableStatus]

	],
	'asArray' => true,

]

$data = Yii::$service->product->coll($filter);
$coll = $data['coll'];   // 当前页的数据
$count = $data['count'];  // 产品总数,用于分页

最后,关于产品评论,参看帮助文档:Fecshop 产品评论

共收到 0 条回复
没有找到数据。
添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册
Your Site Analytics