我想得到一张桌子的第四列的总和,我悲惨地干涸。
我的控制器:
public function ticket()
{
$cmdbars = DB::table('bars')
->orderBy('updated_at', 'asc')
->get();
return view('bar_iframe', compact('cmdbars'));
}
我的看法 :
<table>
@foreach($cmdbars as $cmdbar)
<tr>
<td>
{{ $cmdbar->la_qtt }}
</td>
<td>
{{ $cmdbar->la_denom }}
</td>
<td class="txtr">
{{ number_format($cmdbar->le_tarif_bar/100, 2, '.', ' ') }}
</td>
<td class="txtr">
@php
$sum_produit = $cmdbar->le_tarif_bar * $cmdbar->la_qtt;
@endphp
{{ number_format($sum_produit/100, 2, '.', ' ') }}
</td>
</tr>
@endforeach
<tr>
<td colspan="4">
<div class="total_cmd">
{{-- HERE, I would like the sum of the 4th column --}} €
</div>
</td>
</tr>
我正在寻找一天,我正在阻止这个问题,谢谢你的帮助
像这样的东西应该工作:
{{ number_format($cmdbars->sum(function($el) {return $el->le_tarif_bar * $el->la_qtt; })/100, 2, '.', ' ') }}
(假设您使用的是Laravel 5.3。+,其中Query构建器返回元素集合 - 此处使用方法sum)
我也没有看到使用中的任何意义:
@php
$sum_produit = $cmdbar->le_tarif_bar * $cmdbar->la_qtt;
@endphp
{{ number_format($sum_produit/100, 2, '.', ' ') }}
使用:
{{ number_format(($cmdbar->le_tarif_bar * $cmdbar->la_qtt)/100, 2, '.', ' ') }}
代替。在Blade中使用PHP(或通常在视图中)是不好的做法,如果可能应该避免使用。
编辑
就个人而言,我会使用Eloquent来创建Bar
模型并获得这样的条形:
$cmdbars = Bar::orderBy('updated_at', 'asc')->get();
在Bar
模型中,我会添加访问者:
public function getPriceAttribute()
{
return $this->le_tarif_bar * $this->la_qtt;
}
然后在视图而不是:
@php
$sum_produit = $cmdbar->le_tarif_bar * $cmdbar->la_qtt;
@endphp
{{ number_format($sum_produit/100, 2, '.', ' ') }}
我会用:
{{ number_format($cmdbar->price/100, 2, '.', ' ') }}
为了得到总和,我会用:
{{ number_format($cmdbars->sum('price')/100, 2, '.', ' ') }}
在控制器中使用带有回调的Collection::sum()并将结果传递给视图:
$cmdbars = DB::table('bars')
->orderBy('updated_at', 'asc')
->get();
$total = $cmdbars->sum(function ($cmdbar) {
return $cmdbar->le_tarif_bar * $cmdbar->la_qtt;
});
return view('bar_iframe', compact('cmdbars', 'total'));
然后你可以在视图中使用{{ $total }}
。
将每个结果添加到$total
变量:
@php
$sum_produit = $cmdbar->le_tarif_bar * $cmdbar->la_qtt;
$total += $sum_produit;
@endphp
{{ number_format($sum_produit/100, 2, '.', ' ') }}
显示$total
:
<div class="total_cmd">
{{ number_format($total/100, 2, '.', ' ') }} €
</div>