如何解决如何在Laravel中结帐后减少产品数量带会话
请问我在结帐后如何递减。到目前为止,这是我唯一的想法,但是它显示一个错误,提示“ Illuminate \ Database \ Eloquent \ Collection类的对象无法转换为数字 “。感谢您的回复。我也正在使用带有会话的那个。
注意。我编辑并放置了另一张图片以进行更清晰的说明,这是代码
public function postCheckout(Request $request){
$books = Product::all();
if (!Session::has('cart')){
return view('shop.shoppingcart');
}
$oldCart = Session::get('cart');
$cart = new Cart($oldCart);
$order = new Order();
$order->cart = serialize($cart);
$order->address = $request->input('address');
$order->name = $request->input('name');
Auth::user()->orders()->save($order);
$q=$cart->totalQty;
$r=$books-$q;
Product::table('books')
->where('id',$id)
->update(array('quantity' => $r));
Session::forget('cart');
return redirect("home");
}
错误是“ Illuminate \ Database \ Eloquent \ Collection类的对象无法转换为数字”
解决方法
您具有以下代码行:
$books = Product::all();
在这里,$books
是一个集合。
几行之后,这一行:
$r=$books-$q;
这当然不能正确执行,因为您正试图从集合中减去一个数字。
我假设您实际上并不想要整个书集,而是书的数量。在这种情况下,将$books = Product::all();
替换为 $books = Product::count();
,您的代码应该可以正常工作。
但是,该行计数所有 本书,我想您只想减少购买的书籍的数量。不幸的是,这不是您编写的代码。例如,在此代码中:
Product::table('books')
->where('id',$id)
->update(array('quantity' => $r));
$id
变量来自哪里?您不会在任何地方设置其值。您应该做的是迭代购物车中的每个项目,获取每个项目的ID和数量,并对每个项目执行更新查询。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。