将心比心,方得人心~

查询颜色包含red或yellow的产品并且尺寸包含40或41

周洲 2022-10-28 15:47:35

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



打赏

『微信打赏』

Tag标签find_in_set 

我是有底线的