2014-01-10 31 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

相关问题