diff --git a/app/api/logic/GoodsLogic.php b/app/api/logic/GoodsLogic.php index ed99b82d..891b9884 100755 --- a/app/api/logic/GoodsLogic.php +++ b/app/api/logic/GoodsLogic.php @@ -428,20 +428,6 @@ class GoodsLogic extends Logic } } - $whereIn = ''; - if (isset($get['cate']) && $get['cate'] && isset($get['keyword'])) { - $cate = GoodsCategory::where(['is_show' => 1, 'del' => 0]) - ->where([['name', 'like', '%' . trim($get['keyword']) . '%']]) - ->field('id') - ->select() - ->toArray(); - - $whereIn = array_map(function ($innerArray) { - return implode(',', $innerArray); - }, $cate); - $get['keyword'] = ''; - } - // 品牌 if(isset($get['brand_id']) && !empty($get['brand_id']) && filter_var($get['brand_id'], FILTER_VALIDATE_INT)) { $where[] = ['brand_id', '=', $get['brand_id']]; @@ -532,14 +518,41 @@ class GoodsLogic extends Logic // dump($wh); // dump($where); // dump($order);die; - $list = Goods::with(['shop']) - ->field($field) - ->where($wh) - ->where($where) - ->whereIn('first_cate_id|second_cate_id|third_cate_id', $whereIn) - ->order($order) - ->page($get['page_no'], $get['page_size']) - ->select(); + $whereIn = ''; + if (isset($get['keyword'])) { + $cate = GoodsCategory::where(['is_show' => 1, 'del' => 0]) + ->where([['name', 'like', '%' . trim($get['keyword']) . '%']]) + ->field('id') + ->select() + ->toArray(); + } + + if ($cate) { + $where = array_filter($where, function($item) { + return $item[0] !== "name"; + }); + $where = array_values($where); + foreach ($cate as &$v) { + $list = Goods::with(['shop']) + ->field($field) + ->where($where) + ->where([['first_cate_id|second_cate_id|third_cate_id', 'like', '%' . $v['id'] . '%']]) + ->order($order) + ->page($get['page_no'], $get['page_size']) + ->select(); + } + } else { + $list = Goods::with(['shop']) + ->field($field) + ->where($wh) + ->where($where) + ->order($order) + ->page($get['page_no'], $get['page_size']) + ->select(); + } + + + // foreach ($list as &$v) { // $v['market_price'] = round($v['min_price'],2); // $v['min_price'] = round(0.88*$v['min_price'],2);