Laravel 5.2数据透视表数据更新问题

时间:2016-06-22 05:41:32

标签: php json laravel many-to-many

我有一个购物车表和物品表,它们之间有很多对很多的关系。数据透视表包含其他列 - '数量'和' line_price'。

我的控制器中的方法是更新数量并刷新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'除非方法被调用两次,否则不会更新。

refresh()方法的逻辑似乎是正确的,但是我在刷新()

之后无法在我的JSON响应中获取更新的lineprice值

我该如何解决这个问题?

TIA

1 个答案:

答案 0 :(得分:2)

那是因为$item变量没有使用新的line_price刷新。 黑客将以加载它的方式重新加载它。

$item = $cart->items()->where('item_id', $itemid)->first();