我无法为自己找到解决方案的快速问题,也无法通过谷歌搜索。
在我的仪表板视图中,我会显示我的付款计划,只需执行操作$plans = Plan::all()
并将其返回到视图中即可。那里没什么好看的。但是,在我的实际仪表板视图中,我想显示已完成交易的总金额(以美元计)。所以在我看来,我做了以下(剥离的例子):
@foreach($plans as $plan)
{{ $plan->paidAmount() }}
@endforeach
这是使用我的模型中的以下方法:
private function paidAmount()
{
return $this->transactions->sum('amount');
}
这基本上只是获取与该计划相关的所有交易的总金额,并将其显示在页面上。但是,这会为我的每个计划生成一个新查询。假设我有 5 个计划,它将为我需要显示的每个金额生成 5 个额外的查询。
我想显示的剩余金额也是如此:
private function paidAmount()
{
return $this->amount - $this->paidAmount();
}
这将生成额外的 5 个查询。因此,对于我在其中显示一些信息的简单表,正在执行多达 11 个查询。
有什么方法可以在我的原始查询中包含paidAmount
和remainingAmount
?我知道应该有办法,只是我还没找到。所以只是一些类似的东西:
$plans = Plan::with('paidAmount')->get();
您可以像这样在主查询中使用子查询来计算总和
像这样 -
$plans = Plan::all('*', DB::RAW("(SELECT SUM(amount) FROM transactions WHERE plan_id=plans.id ) as amount") );
这样你在视图中渲染时就已经有了 sum
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句