2017-04-16 135 views
3
  • 我有模式Order中使用自定义属性模型。
  • 订购有许多Item
  • 一种Item具有price属性(从数据库)。
  • OrdergetAmountAttribute方法,该方法是这样的:

/** 
* @return double 
*/ 

public function getAmountAttribute() 
{ 
    return $this->items->sum('price'); 
} 


/** 
* @return \Illuminate\Database\Eloquent\Relations\HasMany 
*/ 
public function items() 
{ 
    return $this->hasMany(Item::class); 
} 

所以我可以简单地做$order->amount上获取订单的项目的总价格。Laravel 5.4 - 集合


现在我的Order集合,我希望获取每一笔订单,其总价格开始于10,如何做到这一点,因为我不能用我的自定义属性上where声明?

+1

如果你有一个现有的集合,只需要运行一个循环。否则,你可能需要一个自定义的SQL查询。 – HtmHell

+0

集合上的'filter()'应该足够了。 –

回答

0

您可以通过->havingRaw('SUM(price) > 10')

0

做到这一点,您只能得到订单,而不是获得订单的全部收集和获取所需的订单(起步价10总价订单)的期望集合。

->get(function($order) { 
     return $order->amount > 10; 
    }); 
+0

在执行'get'方法之前,我可以实现这个目标吗?我的意思是当你还在“建造”收藏。 –

+0

@Eliya是的。这就是我所回答的。 –