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 查询的数...

本文章首发在 LearnKu.com 网站上。

为了保证课程的高品质,我们需要对课程进行收费。付费后 才能观看剩余内容。 购买

上一篇 下一篇
leo
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 21

leirhy
有里有部分代码有问题,改成这样才对
2 个点赞 | 1 个回复 | 分享 | 课程版本 5.5
XFancy
购物车页面无法显示
1 个点赞 | 1 个回复 | 分享 | 课程版本 5.5
manbofish
不能把加入购物车的产品移出购物车
0 个点赞 | 6 个回复 | 问答 | 课程版本 5.7
wangxp
Call to undefined relationship [product] on model [App\Models\Product]?
0 个点赞 | 6 个回复 | 问答 | 课程版本 5.5
vasar
yarn add @fortawesome/Font Awesome-free 安装失败
0 个点赞 | 5 个回复 | 分享 | 课程版本 5.7
may_J
加载资源文件时,遇到自己的盲区错误
0 个点赞 | 4 个回复 | 问答 | 课程版本 5.7
战狼1991
商品总价
0 个点赞 | 4 个回复 | 问答 | 课程版本 5.7
lawrencepu
Neymar
关于预加载 with (['productSku.product']) 的格式问题
0 个点赞 | 3 个回复 | 问答 | 课程版本 5.7
yandihuangdi
Console 报以下错误会影响吗?
0 个点赞 | 3 个回复 | 问答 | 课程版本 5.7
jingzhongwa
为什么删除购物车商品的时候不用给 where 传递 user->id???
0 个点赞 | 3 个回复 | 问答 | 课程版本 5.5
uasemax
yarn add @fortawesome/Font Awesome-free 前面要加 sudo
0 个点赞 | 2 个回复 | 问答 | 课程版本 5.7
jingzhongwa
无法删除购物车内容,无法传递 productSku 对象
0 个点赞 | 2 个回复 | 问答 | 课程版本 5.5
SZL_
做到查看购物车这里报了错误
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.8
bing_
执行 $ Git status 后长得又跟老师的不一样
0 个点赞 | 1 个回复 | 分享 | 课程版本 5.8
yueruitao
关于购物车问题,应该优化勾选
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.5
shwfz01a
Heroku 上的网站不显示 Font Awesome 图标
0 个点赞 | 0 个回复 | 问答 | 课程版本 5.8
lawrencepu
全选那段代码可以不用 foreach
0 个点赞 | 0 个回复 | 分享 | 课程版本 5.8