2016-08-12 51 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將翻轉鍵與值,這樣我們就可以訂購返回相應的電話號碼....