Ela*_*ley 8 mysql eloquent laravel-4
我有两个查询,第一个给我一个id数组,这是一个特定的顺序.然后我将这个ID数组传递给第二个查询,如下所示:
Operation::whereIn('id', $ids)->get();
Run Code Online (Sandbox Code Playgroud)
但是当我输出该查询的结果时,顺序已经改变,如果数组$ ids类似于(4,2,6,9),这是我想要结果的顺序,输出将给我2 ,4,6,9.我怎么能避免这种情况?
Jar*_*zyk 15
MySQL的排序方式与in where in子句中的顺序相同:
$ids; // array of ids
$placeholders = implode(',',array_fill(0, count($ids), '?')); // string for the query
Operation::whereIn('id', $ids)
->orderByRaw("field(id,{$placeholders})", $ids)->get();
Run Code Online (Sandbox Code Playgroud)
你可以做
$idsImploded = implode(',',$ids);
Operation::whereIn('id', $ids)->orderByRaw("FIND_IN_SET('id','$idsImploded')")->get();
Run Code Online (Sandbox Code Playgroud)
这是一个问题,MySql 没有按照您指定的顺序返回结果,因此您需要在之后重新排序它们。
类似的解决方案可以在这里找到:避免按 MYSQL IN 关键字排序
| 归档时间: |
|
| 查看次数: |
4446 次 |
| 最近记录: |