table_name, 'default'); } /** * 标签类型获取满足条件的产品id * @param $priceRange * @param $carProductLabel * @param $productLevel * @return array|false */ public function getProductLabelList($priceRange = [], $carProductLabel = [], $productLevel = []) { $labelIdArray = []; $priceRange && $labelIdArray = array_merge($labelIdArray, $priceRange); $carProductLabel && $labelIdArray = array_merge($labelIdArray, $carProductLabel); $productLevel && $labelIdArray = array_merge($labelIdArray, $productLevel); $labelIdString = implode(',', $labelIdArray); $productIds = []; if ($labelIdString) { $priceRangeIds = $priceRange ? implode(',', $priceRange) : ''; $carProductLabelIds = $carProductLabel ? implode(',', $carProductLabel) : ''; $productLevelIds = $productLevel ? implode(',', $productLevel) : ''; $subSql = "SELECT product_id FROM lc_auto_product_label WHERE label_id IN ({$labelIdString}) GROUP BY product_id"; $havingWhere = []; $priceRangeIds && $havingWhere[] = "SUM(CASE WHEN label_id IN ({$priceRangeIds}) THEN 1 ELSE 0 END)>=1"; $carProductLabelIds && $havingWhere[] = "SUM(CASE WHEN label_id IN ({$carProductLabelIds}) THEN 1 ELSE 0 END)>=1"; $productLevelIds && $havingWhere[] = "SUM(CASE WHEN label_id IN ({$productLevelIds}) THEN 1 ELSE 0 END)>=1"; $havingWhere && $subSql .= ' HAVING ' . implode(' AND ', $havingWhere); $result = $this->autoProduct->db->query($subSql)->result_array(); $result && $productIds = array_column($result, 'product_id'); } return $productIds; } }