未找到Laravel OrderByRaw列

时间:2016-01-11 14:30:06

标签: php mysql laravel

我遇到了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是我的字符串,它就无法正常工作。

任何解决方案?

1 个答案:

答案 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();