Laravel 5.4 - 在集合中使用自定义属性模型

时间:2017-04-16 09:00:58

标签: php laravel laravel-eloquent

  • 我有模型Order
  • 订单有很多 Item
  • Item具有price属性(来自数据库)。
  • Order有一个getAmountAttribute方法,如下所示:
/**
 * @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即可获取订单商品的总价。

现在我有一个Order的集合,我想获取其总价格从10开始的每个订单。我怎样才能实现这一点,因为我无法在{{1}上使用我的自定义属性声明?

2 个答案:

答案 0 :(得分:0)

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

来完成

答案 1 :(得分:0)

您只能获得所需的订单集合(总价格从10开始的订单),而不是获取所有订单集合并获取所需订单。

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