2016-08-12 45 views
0

我有这样的口才通话中进行选择:雄辩从阵列以相同的顺序

$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 
) 
.... 

顺序由如何$数组变量有它的元素有序指定...

是否有可能做这样的事情,在雄辩的?

+0

不使用DB:行.. –

回答

0

好了,解决的办法是如下:

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

基本上,我们可以排序Eloquent:Collections响应。

array_flip将翻转键与值,这样我们就可以订购返回相应的电话号码....