PHP 个动态列的总和
Sum of a PHP dynamic column
我想要一个table的第4列的总和,我干的很惨
我的控制器:
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.+,其中查询生成器返回元素集合 - 此处使用方法 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, '.', ' ') }}
将每个结果添加到 $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>
在控制器中使用 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 }}
。
我想要一个table的第4列的总和,我干的很惨
我的控制器:
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.+,其中查询生成器返回元素集合 - 此处使用方法 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, '.', ' ') }}
将每个结果添加到 $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>
在控制器中使用 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 }}
。