getWhere($where)->field([ '*', '(SELECT SUM(stock) FROM table_product_attr_value WHERE product_id = table_product.id AND type = 0) as stock', '(SELECT SUM(sales) FROM table_product_attr_value WHERE product_id = table_product.id AND type = 0) as sales' ]); $model = $model->page((int)$where['page'], (int)$where['limit']); $data = ($data = $model->select()) && count($data) ? $data->toArray() : []; foreach ($data as &$item) { $cateName = Category::alias('c')->join('Category b', 'b.id = c.pid')->where('c.id', $item['cate_id'])->column('c.cate_name as two,b.cate_name as one', 'c.id'); $item['cate_name'] = []; foreach ($cateName as $k => $v) { $item['cate_name'][] = $v['one'] . '/' . $v['two']; } $item['cate_name'] = is_array($item['cate_name']) ? implode(',', $item['cate_name']) : ''; $item['stock_attr'] = $item['stock'] > 0 ? true : false;//库存 } unset($item); $count = (new Product)->getWhere($where)->count(); return ['count' => $count, 'list' => $data]; } /** * 查询条件 * @param $model * @return object */ public function getWhere($where = []) { $model = new self(); if (!empty($where)) { $type = $where['type'] ?? 0; switch ((int)$type) { case 1: $model = $model->where(['is_show' => 1, 'is_del' => 0]); break; case 2: $model = $model->where(['is_show' => 0, 'is_del' => 0]); break; case 3: $model = $model->where(['is_del' => 0]); break; case 4: $model = $model->where(['is_del' => 0])->whereIn('id', function ($query) { $query->name('product_attr_value')->where('stock', 0)->where('type', 0)->field('product_id')->select(); })->where(function ($query) { $query->whereOr('stock', 0); }); break; case 5: $model = $model->where(['is_show' => 1, 'is_del' => 0])->where('stock', '<=', 3)->where('stock', '>', 0); break; case 6: $model = $model->where(['is_del' => 1]); break; case 7: $model = $model->where(['is_one' => 1, 'is_del' => 0]); break; }; if (isset($where['mer_id']) && $where['mer_id'] != '') { $model = $model->where('mer_id', $where['mer_id']); } if (isset($where['store_name']) && $where['store_name'] != '') { $model = $model->where('store_name|keyword|id', 'LIKE', "%$where[store_name]%"); } if (isset($where['cate_id']) && $where['cate_id'] != '') { $model = $model->where('cate_id', $where['cate_id']); } $model = $model->order('sort desc,id desc'); } return $model; } }