Laravel雄辩:将两列两个不同的表和显示相乘

时间:2018-04-28 22:09:50

标签: laravel laravel-5 eloquent

购物车表栏:

    'id',
    'user_id',
    'sp_id',
    'service_id',
    'dryclean',
    'q_Shirt',
    'q_Pant',
    'q_Tie'

定价表栏:

'id'
'sp_id'
'Shirt'
'Pant'
'Tie'

两个表都定义了任何关系。

在购物车控制器中

public function cart($sp_id, $service_id)
    {
     $prices = DB::table('pricings')->where('pricings.sp_id', '=', $sp_id)->get();
     $cart = DB::table('carts')->where('carts.service_id', '=' , $service_id)->where('carts.sp_id','=', $sp_id)->where('user_id', '=' , auth()->id())->orderBy('id', 'desc')->take(1)->get();
     return view('user.cart')->with('prices', $prices)->with('cart', $cart);
    }

如何计算订单总额?

如果column dryclean的值为none,则total 0 。 否则总计

(
carts->q_Shirt*prices->Shirt +
carts->q_Pant*prices->Pant +
carts->q_Tie*prices->Tie
) 

此代码仅用于了解我如何计算总数

请帮我在laravel控制器中编写代码来计算总数以及如何在视图中显示它。

1 个答案:

答案 0 :(得分:0)

我不认为能够很好地理解你,但你可以试着这个想法。

$prices = DB::table('pricings')
                 ->where('pricings.sp_id', '=', $sp_id)
                 ->get();
$cart = DB::table('carts')
          ->where('carts.service_id', '=' , $service_id)
          ->where('carts.sp_id','=', $sp_id)
          ->where('user_id', '=' , auth()->id())
          ->orderBy('id', 'desc')->take(1)
          ->get();
$total = 0;
$prices->reduce(function($acc, $current) use ($cart, &$total) {
      return $total += ($current->Shirt + $cart->q_Shirt) + 
                ($current->Pant + $cart->q_Pant) + 
                ($current->Tie + $cart->q_Tie);
});