美文网首页
laravel中,不让 WHERE IN 的查询结果自动排序

laravel中,不让 WHERE IN 的查询结果自动排序

作者: 腿长袖子短 | 来源:发表于2020-05-08 17:03 被阅读0次

    mysql在使用where in查询时,会将查询结果自动根据主键ASC排序,在某些特定场景下,这种机制就会造成问题

    解决办法

    主要使用$symbolStr = implode(',',$attrSymbolPath);->orderByRaw(DB::raw("FIELD(symbol,$symbolStr)"))

    完整代码示例

    public function getAttrValueName($attrSymbolPath)
        {
            //将$attrSymbolPath变量的值转化为一个字符串
            $symbolStr = implode(',',$attrSymbolPath);
            try {
                $data = $this->attrValue::query()
                    ->whereIn('symbol', $attrSymbolPath)
                    //灵魂就在这里
                    ->orderByRaw(DB::raw("FIELD(symbol,$symbolStr)"))
                    ->get(['attr_value'])->toArray();
                return $data;
            } catch (\Exception $e) {
                //预警处理
                $this->warning->throwMsg('获取SKU属性值名称', $e->getMessage());
                //返回处理
                $this->dataBase->errorMsg();
            }
        }
    

    相关文章

      网友评论

          本文标题:laravel中,不让 WHERE IN 的查询结果自动排序

          本文链接:https://www.haomeiwen.com/subject/ieniwctx.html