数据库存储格式:字段名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)];
}