6.2. 查看购物车
查看购物车
上一节我们实现了将商品添加到购物车,本章节将要实现查看购物车中的商品。
1. 控制器
在 CartController
中添加 index()
方法:
app/Http/Controllers/CartController.php
.
.
.
public function index(Request $request)
{
$cartItems = $request->user()->cartItems()->with(['productSku.product'])->get();
return view('cart.index', ['cartItems' => $cartItems]);
}
.
.
.
with(['productSku.product'])
方法用来预加载购物车里的商品和 SKU 信息。如果这里没有进行预加载而是在渲染模板时通过 $item->productSku->product
这种懒加载的方式,就会出现购物车中的每一项都要执行多次商品信息的 SQL 查询,导致单个页面执行的 SQL 数量过多,加载性能差的问题,也就是经典的 N + 1 查询问题。使用了预加载之后,Laravel 会通过类似 select * from product_skus where id in (xxxx)
的方式把原本需要多条 SQL 查询的数...