我遇到了orderByRaw
Laravel的问题。
阵列:
$arr = [H123456, H7654321];
查询:
$ids = implode(',', $arr);
$query = User::whereIn('id', $arr)->isActive()->orderByRaw(DB::raw("FIELD(id,". $ids.")"))->get();
这是原始查询:
"select * from `merchant_heads` where `id` in (?, ?) and `category_id` = ? and `status` = ? order by FIELD(id,Hf561b6fd32aec6ea,H7c81e6fa3f85fc74) limit 10 offset 0"
我已经把它放在我的用户模型中了:
public $incrementing = false;
当我执行查询时,它会显示Column not found: 1054 Unknown column 'Hf561b6fd32aec6ea' in 'order clause'
。
我尝试使用单个值更改$ ID,例如1
它正常工作。但如果ID是我的字符串,它就无法正常工作。
任何解决方案?
答案 0 :(得分:1)
由于id是字符串,因此需要封装它们。幸运的是,laravel可以为你做到。试试这个:
$ids = implode(',', $arr);
$qs = array_fill(0,count($arr),'?);
$query = User::whereIn('id', $arr)->isActive()->orderByRaw(DB::raw("FIELD(id,". implode(',', $qs).")"),$arr)->get();