2016-03-21 67 views
1

我有一個表,它返回類別名稱。我獲取所有記錄,但問題是它有一條我想要以不同的方式處理的記錄,「其他水果」。我希望它最後顯示。如何更改Eloquent集合中的結果順序?

例如,當我從數據庫中獲取的記錄:

Category::where('parent_category_id', $data)->where('is_active', 1)->lists('name', 'id'); 

它返回集合看起來是這樣的:

Illuminate\Support\Collection Object 
(
    [items:protected] => Array 
     (
      [27] => Apple 
      [346] => Other Fruits 
      [350] => Papaya & Pomegranate 
      [377] => Banana 
      [438] => Orange & Sweet Lime 
     ) 
) 

我如何可以移動「等水果」項目是最後一個?

+0

「其他商店」是否存儲在數據庫中?如果是的話,你如何識別它? – Laerte

+0

對不起其他水果我如何確保其他水果最後到來? –

+0

好吧,但是「其他水果」存儲在數據庫? – Laerte

回答

0

嘿只需使用兩個規則,獲得兩個收集

$category = Category::where('parent_category_id', $data)->where('is_active', 1)->lists('name', 'id'); 
$other = << use your rule correctly >> 

然後使用此集合在你看來

foreach($category as .....) 
foreach($other as ....) 
0

你可以嘗試這樣的事情。

$categoriesExceptOtherFruits = Category::where('parent_category_id', $data) 
     ->where('is_active', 1) 
     ->where('id', '<>', $otherFruitsId); 

$allCategories = Category::where('parent_category_id', $data) 
     ->where('is_active', 1) 
     ->where('id', $otherFruitsId) 
     ->union($categoriesExceptOtherFruits) 
     ->lists('name', 'id'); 

如果你有幾個other類別,使用like代替<>

另一種解決方法是在表格中創建sort列,並使用orderBy('sort', 'asc')

當然,您可以手動重新排序收集。