2016-06-07 2 views
1

쿠폰 코드를 제출할 때 제품 가격을 업데이트하고 싶습니다. 쿠폰 이름을 ticket으로 지정했습니다.세션의 값을 변경하고 저장하십시오. Laravel

public function order(Request $request) 
    { 
     $products = session('cart'); 

     $ticket_code = Input::get('ticket'); 
     $ticket = Ticket::where('ticket', $ticket_code)->first(); 

     foreach($products as $p){ 
      $price = $p['price']; 
     } 

     if(count($products) && $ticket['max'] > $ticket['used']) { 
      $subtotal = [$price*70/100]; 
      $ticket->used += 1; 
      $ticket->save(); 
      foreach($products as $p){ 
       $p['price'] = $subtotal; 
       $p->save(); 
      } 
      flash()->success('Kuponas sėkmingai panaudotas!'); 
      return view('cart.order')->with(array(
       'products' => $products, 
       'subtotal' => $subtotal, 
      )); 

     } 

     else { 
      $finalTotal = 0; 
      $subtotal = []; 
      return view('cart.order')->with(array(
       'products' => $products, 
       'subtotal' => $subtotal, 
       'finalTotal' => $finalTotal 
      )); 
     } 


    } 

이 코드 나던 작업 :이 제 기능입니다

foreach($products as $p){ 
       $p['price'] = $subtotal; 
       $p->save(); 
      } 

내가 얻을 오류 : foreach itselfs가 작동 ticket없이 Call to a member function save() on array

. 그것은 제출 될 때 가격을 변경하지만 한 페이지에만 변경됩니다. 그런 다음 결제 사이트로 이동하면 ticket없이 가격이 계속 표시됩니다.

작업 용액

foreach($products as &$item) { 
        $item['price'] = $item['price']*70; 
        $item['price'] = $item['price']/100; 
       } 

Session::put('cart', $products); 
+0

근무 '$ p'의 배열이다! 배열이 아닌 배열 [키]를 저장하려고합니다. 예 :'$ p [ 'key_to_save'] -> save()' – Zl3n

+0

'print_r ($ p);'하고 당신이 얻는 것을보십시오. 당신에게 배열을 가지고있는 것 같아요 ... – nerdlyist

+0

좋아, 어떻게 배열에 저장하지? $ p [ 'price'] -> save();를 tryed했습니다. 그리고 그것은 여전히 ​​같은 에러입니다 –

답변

1

이것은

foreach($products as &$item) { 
        $item['price'] = $item['price']*70; 
        $item['price'] = $item['price']/100; 
       } 

Session::put('cart', $products); 
관련 문제