快速的问题,我还没有找到自己的解决办法,也没有谷歌它。
在我的仪表板视图中,我显示了我的支付计划,只需执行$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();发布于 2017-06-27 12:51:24
您可以在主查询中使用以下子查询来计算和
就像这样-
$plans = Plan::all('*', DB::RAW("(SELECT SUM(amount) FROM transactions WHERE plan_id=plans.id ) as amount") );这样,在视图中呈现时就已经有求和了。
https://stackoverflow.com/questions/44780604
复制相似问题