2014-01-10 47 views
2

我從下面的代碼創建了Laravel模型中的附加屬性。如何使用Laravel中的附加屬性進行排序

protected $appends = array('total'=>''); 

而且我設置了返回的值。

public function getTotalAttribute(){ 
      return ProductPart::where('product_id',$this->id)->count(); 
    } 

然後我想用total屬性

我試圖用Product::orderBy('total','desc')->get(),但它沒有工作命令從數據庫記錄。

有沒有人對此有一些建議?

回答

3

的排序依據需要一個實際的數據庫字段不是附加一個

試試這個

$products = Product::all(); 
$products = $products->sortBy(function($product){ 
    return $product->total; 
}); 
+0

謝謝,這是真棒,我試圖用'回扭轉結果 - $產品 - > total'它也起作用。 –

+2

它似乎工作和投票了,但經過幾次嘗試似乎並不真實。一旦擁有Collection,sortBy似乎對封閉效果不起作用,也不會通過append屬性(它出現在集合中的每個對象中)對集合進行排序。看起來這可能是Collection忽略附加值的一個問題,因爲它們最終與「真實」屬性不同。不能刪除我的upvote,雖然因爲我需要編輯答案,但除了通過php排序它不能提供任何洞察力。 – RedSash

+0

你有沒有找到解決這個問題的辦法? @RedSash – dbr

相關問題