在我的laravel电子商务项目中 我在数据库中有2个表:
cart [c_id(pk), laundry, l1, dryclean, dc1, dc2, dc3, shop_id]
price [p_id, p_l1, p_dc1, p_dc2, p_dc3, shop_id]
在控制器中我获得登录商店的价格,即单行
$price = DB::table('price')->where('price.shop_id', '=', auth()->id())->get();
也从购物车表中获取一行我正在参加最新的参赛作品
$cart = DB::table('cart')->latest()->first();
购物车表中的洗衣和干洗列可以有两个值YES和NO。如果洗衣是肯定的,那么用户也输入l1(这是数量),否则为空。
类似地,对于干洗柱,可以具有两个值YES和NO。如果是,则用户也输入dc1,dc2,dc3(项目数量)。
现在我想从控制器获取结账页面的总金额,包括检查洗衣和干洗价值的条件。
到目前为止,我在视图文件中计算总数。
@if ( $cart->dryclean == "no")
@php $c1=0;$c2=0;$c3=0; @endphp
@else
@if (is_null($cart->dc1))
@php $c1=0; @endphp
@else
@php
$a1= $cart->dc1;
$b1 =$price->p_dc1;
$c1= $a1*$b1;
@endphp
@endif
@if (is_null($cart->dc2))
@php $c2=0; @endphp
@else
@php
$a2= $cart->dc2;
$b2 =$price->p_dc2;
$c2= $a2*$b2;
@endphp
@endif
@if (is_null($cart->dc3))
@php $c3=0; @endphp
@else
@php
$a3= $cart->dc3;
$b3 =$price->p_dc3;
$c3= $a3*$b3;
@endphp
@endif
{{ $c1 + $c2 + $c3}} <!-- This is total amount -->
@endif
请帮我编写控制器查询以计算控制器本身的总金额并显示在视图中。
提前致谢。
答案 0 :(得分:0)
只需删除您所做的一切的刀片语法即可。
if ( $cart->dryclean == "no" ) {
$c1 = 0;
$c2 = 0;
$c3 = 0;
} else {
if ( is_null($cart->dc1) ) {
$c1 = 0;
} else {
$a1 = $cart->dc1;
$b1 = $price->p_dc1;
$c1 = $a1 * $b1;
}
if ( is_null($cart->dc2) ) {
$c2 = 0;
} else {
$a2 = $cart->dc2;
$b2 = $price->p_dc2;
$c2 = $a2 * $b2;
}
if ( is_null($cart->dc3) ) {
$c3 = 0;
} else {
$a3 = $cart->dc3;
$b3 = $price->p_dc3;
$c3 = $a3 * $b3;
}
// total used to be calculated here
}
$total = $c1 + $c2 + $c3;
return view('your.view.here')->with('total', $total);
基于我所看到的一些提示:
$cost1
。我实际上甚至无法判断这是否是你的意图,因为它只是说'c1'.. 如果你接受我的提示,你可以让你的控制器像下面的例子。
if ( $cart->dryclean ) {
$cost1 = ($cart->dc1 ?? 0) * $price->p_dc1;
$cost2 = ($cart->dc2 ?? 0) * $price->p_dc2;
$cost3 = ($cart->dc3 ?? 0) * $price->p_dc3;
} else {
$cost1 = 0;
$cost2 = 0;
$cost3 = 0;
}
$total = $cost1 + $cost2 + $cost3;
return view('your.view.here')->with('total', $total);
如果你想更进一步,你可以这样做(使用三元运算符):
// set class properties
$this->cart = $cart;
$this->price = $price;
$total = ( $cart->dryclean )
? $this->costOf('1') + $this->costOf('2') + $this->costOf('3')
: 0;
return view('your.view.here')->with('total', $total);
当然,这是在原始控制器功能之外使用另一个私有函数:
private funtion costOf($number)
{
return ( $this->cart->{'dc'.$number} ?? 0 ) * $this->price->{'p_dc'.$number};
}
此costOf
函数使用数字的字符串版本来获取每个模型类型的关联字段。