【问题标题】:Eloquent select from array in the same order以相同的顺序从数组中选择
【发布时间】:2016-08-12 02:09:08
【问题描述】:

我有这个雄辩的呼唤:

$array = [100, 200, 50, 3, 300];
$response = EloquentModel::whereIn('id', $array)->get();

但现在我希望结果的顺序与数组的排序顺序相同;所以结果应该是这样的:

0 => Obj(
    [id] => 100
    [name] => name100
)
1 => Obj(
    [id] => 200
    [name] => name200
)
2 => Obj(
    [id] => 50
    [name] => name50
)
3 => Obj(
    [id] => 3
    [name] => name3
)
....

顺序由 $array 变量的元素排序方式指定...

在 Eloquent 中可以做类似的事情吗?

【问题讨论】:

  • 不使用 db:row..

标签: sql arrays select eloquent


【解决方案1】:

好的,那么解决方法如下:

        $response = EloquentModel::whereIn('id', $array)->get()->sortBy(function($item, $index) use($array){
            $arrayToSortBy = array_flip($array);
            return $arrayToSortBy[$item->id];
    });

基本上我们可以对Eloquent:Collections响应进行排序。

array_flip 将带值的键翻转,这样我们就可以返回相关的数字进行排序....

【讨论】:

  • 感谢您 - 这是一个比我找到的替代品更好的选择。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
  • 2019-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多