我有一个购物车表和物品表,它们之间有很多对很多的关系。数据透视表包含其他列 - '数量'和' 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
答案 0 :(得分:2)
那是因为$item
变量没有使用新的line_price刷新。
黑客将以加载它的方式重新加载它。
$item = $cart->items()->where('item_id', $itemid)->first();