数据库存储格式:字段名attr_value 值 红色,黄色,40,41
这里使用使用find_in_set处理,也可以用like处理
$attrValueArr = [ // 这是前端传到后端的数据 [ 'atv2022101433281198817','atv2022101433281303168' // 颜色编码 ], [ 'atv2022101347561948550','atv2022101347561948550' // 尺寸编码 ], ]; $map = []; foreach ($attrValueArr as $key => $value) { $sqlAttrValue = ""; foreach ($value as $v) { $sqlAttrValue .= "FIND_IN_SET('{$v}', p.attr_value) or "; } $sqlAttrValue = rtrim($sqlAttrValue, " or "); $map[] = ['', 'exp', Db::raw($sqlAttrValue)]; }