【发布时间】:2018-09-16 14:30:24
【问题描述】:
我有两个模型:
用户:ID、姓名、电子邮件
佣金:id、user_id、金额、已付款、退款、created_at
关系:用户有很多佣金
我需要计算每个用户每月的佣金总和,并将其下载到 CSV 文件中以进行批量支付,但这些总和必须大于 25 且小于 25000。
目前这是我所拥有的,但是如何根据金额范围进行过滤?我需要将那些已支付的佣金标记为已支付,但只有那些大于 25 且小于 25000 的佣金才会支付
$commissions = Commissions::whereYear('created_at', $date->year)
->whereMonth('created_at', $date->month)
->where('paid', 'no')
->where('refund', 'no')
->get();
我可以通过计算 foreach 中的数量来过滤,但我几乎可以肯定 Laravel 中有一种更优雅的方式来做到这一点。
【问题讨论】:
-
$commissions = $user->commissions()->whereYear('created_at', $date->year)->whereMonth('created_at', $date->month)->where( 'paid', 'no')->where('refund', 'no')->sum('你的字段名');
-
我知道 sum 方法,但是如何按范围过滤?
-
其实查询的对象不只是一个用户,而是一般当月的佣金。
-
然后你必须打印你的用户名,然后使用 foreach 循环
-
请添加一些示例数据和预期结果。
标签: php laravel laravel-5 eloquent relationship