我有一个使用Laravel Cashier和Stripe的订阅平台。我正在尝试创建一个管理员后端,管理员可以在其中查看所有订阅付款以及该网站在订阅中生成的总金额。我能够大致得到一份付款清单(通过发票),如下所示:
// create an empty collection to hold the invoices
$users = User::whereNotNull('stripe_id')->get();
foreach($users as $user){
$user->invoices = $user->invoices();
}
这会将所有用户的发票添加到每个用户,然后我可以在我的视图中循环显示这些发票,以获取所有发票和付款金额的列表。
现在问题是,当我尝试获得所有发票的总订阅付款时,总和返回零。这就是我尝试获得总付款的方式:
$total_payments = $users->sum('invoices.total')
始终返回0
。我也尝试重写这个。
$total_payments = $user->sum(function ($inv){
return $inv->invoices->sum('total')
}
这也会返回0
。不确定更好的方法来做到这一点。我正在使用L5.4。
答案 0 :(得分:-1)
这是我尝试过的技巧,也为我工作。
我已将计划段塞(段塞是唯一的字符串)存储为订阅名称。 我们知道订阅表是由收银员自己管理的,所以我将计划名称slug存储为订阅名称。
订阅期间:_
$user->newSubscription($plan->slug, $stripePlanId)->create($paymentMethod);
要获取所有订阅的全部数量:
$subscriptions = Subscription::all();
$totalAmount = 0;
foreach($subscriptions as$subs){
$plan = Plans::where('slug', $subs->name)->first();
$totalAmount = $totalAmount + $plan->cost;
};
return response()->json([
'subscriptions' => $subscriptions,
'totalAmount' => $totalAmount
], $this->successStatus);