我对拉瓦维尔有意见。
数组:
$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;
当我执行查询时,它会说
orderByRaw
。我试图用单个值更改$id,比如
Column not found: 1054 Unknown column 'Hf561b6fd32aec6ea' in 'order clause'
它可以工作。但如果身份证和我的一模一样就没用了。有什么解决办法吗?
最佳答案
因为id是字符串,所以需要封装它们。幸运的是,拉维尔能帮你。试试这个:
$ids = implode(',', $arr);
$qs = array_fill(0,count($arr),'?);
$query = User::whereIn('id', $arr)->isActive()->orderByRaw(DB::raw("FIELD(id,". implode(',', $qs).")"),$arr)->get();
关于php - 找不到Laravel OrderByRaw列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34723942/