美文网首页
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