在雄辩的条件下使用append属性

时间:2018-09-01 10:02:06

标签: laravel eloquent

这是我的laravel项目的情况:

  • 我有3个模型:旅行,活动和费用。
  • 一次旅行有很多活动和很多费用。
  • 模型属性:
    • 旅行:id,标题,描述,日期,位置
    • 活动:id,travel_id,标题,desc,日期,奖品
    • 费用:id,travel_id,标题,desc,奖品
  • 旅行模型具有一个名为“ total_prize”的附加属性,该属性是它具有的所有费用和活动的总和。

到目前为止,一切都很好。我的问题是,当我尝试将过滤器“ available_amount <= total_prize”应用于旅行的列表时。

如何使用附加属性'total_prize'来使所有行程都小于amount_available?

  • amount_available是发布请求变量。

这是total_prize属性的访问器:

 public function getTotalPrizeAttribute()
    {
        return (float) $this->activities->sum('prize') + $this->expenses->sum('prize');
    }

我想做这样的事情:

Travel::where('total_prize', '<=', 'amount_available')->get();

1 个答案:

答案 0 :(得分:1)

您有两种选择:

  • 获取所有 个旅行,然后对其进行过滤(效率不高):
className
  • 在查询中重新创建$travels = Travel::with('activities', 'expenses')->get() ->where('total_prize', '<=', $amount_available);
getTotalPrizeAttribute()