2016-06-22 17 views
1

私はカートテーブルとアイテムテーブルを持っており、それらの間には多対多の関係があります。ピボットテーブルには、追加の列、 'Quantity'と 'line_price'が含まれています。Laravel 5.2ピボットテーブルのデータ更新の問題

私のコントローラのメソッドは、数量を更新してline_priceを更新することです。

マイカートコントローラ方法:

protected function UpdateQuantity($cartid, $itemid, $quantity) 
{ 
    $cart = Cart::where('id', $cartid)->first(); 
    $item = $cart->items()->where('item_id', $itemid)->first(); 

    $item->pivot->quantity = $quantity; 
    $item->pivot->save(); 

    $cart->refresh(); 

    return Response::json([ 
     'success' => true, 
     'message' => 'Item quantity updated in cart', 
     'lineprice' => $item->pivot->line_price, 
    ]); 
} 

と私のカートモデルのメソッド:

public function refresh() 
{ 

    foreach ($this->items as $item){ 
     $item->pivot->line_price = $item->pivot->quantity * $item->price; 
     $item->pivot->save(); 
    } 
    $this->save(); 

} 

私は、このメソッドを呼び出すときに、データベースが正常に更新しますが、JSONレスポンス「lineprice」はありませんメソッドが2回呼び出されない限り更新されます。

refresh()メソッドのロジックが正しいように思えるが、私は後に、私のJSON応答にlinepriceの更新された値を取得することができないよリフレッシュ()

どのように私はこの問題を解決することができますか? $item変数は新しいline_priceで更新されていないためだ

TIA

答えて

2

。 ハッキングは、ロードされたのと同じ方法でリロードすることです。

$item = $cart->items()->where('item_id', $itemid)->first(); 
関連する問題