亚洲欧美日韩国产综合在线_国产av无码专区亚洲av桃花庵_亚洲国产欧美在线看片一国产_久久精品国产亚洲Aⅴ香蕉

thinkphp6構建購物車類

程序猿 2021-03-15 20:51:44 2398瀏覽 加載中

如何用PHP寫一個購物車類呢,下面我們來簡單分析學習下。

代碼

namespace app\common\helper;


use app\common\model\Cart;
use app\common\model\GoodsMain;

class CartHelper
{
    protected $cart;
    protected $cartList;
    public function __construct()
    {
        $this->cart = new Cart();
        $this->cartList = array();
    }

    // 添加到購物車
    public function push($good_main_id, $good_num)
    {
        if (!session("?user")) {
            $this->cartList = session('cartList');
            if (isset($this->cartList[$good_main_id])) {
                $this->cartList[$good_main_id] = $this->cartList[$good_main_id] + $good_num;
            } else {
                $this->cartList[$good_main_id] = $good_num;
            }
            session('cartList', $this->cartList);
        } else {
            $user = session('user');
            $cartList = $user->cart()->where('goods_main_id', '=', $good_main_id)->find();
            if ($cartList) {
                $cartList->goods_num = $cartList->goods_num + $good_num;
                $cartList->save();
            } else {
                $user->cart()->save(["goods_main_id"=>$good_main_id, "goods_num"=>$good_num]);
            }
        }
    }
    // 刪除購物車
    public function del($good_main_id)
    {
        if (!is_array($good_main_id)) {
            $good_main_id[] = $good_main_id;
        }

        if (!session("?user")) {  // 未登錄用戶 刪除 session
            $this->cartList = session('cartList');
            foreach ($good_main_id as $id) {
                if (isset($this->cartList[$id])) {
                    unset($this->cartList[$id]);
                }
            }
            session('cartList', $this->cartList);
        } else {  // 登錄用戶  從數據庫中刪除購物車
            Cart::where([
                ["goods_main_id","in", $good_main_id],
                ["user_id", "=", session("user.id")],
            ])->delete();
        }
    }
    // 清空購物車
    public function clear()
    {
        if (!session("?user")) {
            session('cartList', null);
        } else {
            Cart::where([
                ["user_id", "=", session("user.id")]
            ])->delete();
        }
    }
    // 購物車清單
    public function list()
    {
        if (session('?user')) {
            $user = session('user');
            $cartlist = $user->cart()->select();
            $list = array();
            if (!$cartlist->isEmpty()) {
                foreach ($cartlist as $k=>$v) {
                    $good = GoodsMain::find($v->goods_main_id);
                    if ($good) {
                        $temp["good"] = $good;
                        $temp["goods_num"] = $v->goods_num;
                        $list[] = $temp;
                    }
                }
            }
        } else {
            $cartlist = session('cartList');
            $list = array();
            if (!empty($cartlist)) {
                foreach ($cartlist as $k=>$v) {
                    $good = GoodsMain::find($k);
                    if ($good) {
                        $temp["good"] = $good;
                        $temp["goods_num"] = $v;
                        $list[] = $temp;
                    }
                }
            }
        }
        return $list;
    }
    // 合并購物車  登錄前和登錄后
    public function merge()
    {
        if (!session('?user') || !session('?cartList')) {
            return false;
        }
        $user = session('user');
        $cartList = session('cartList');
        $updateArr = array();
        foreach ($cartList as $k=>$v) {
            $cart = $user->cart()->where("goods_main_id","=",$k)->find();
            if ($cart) {
                $updateArr[] = [
                    'id' => $cart->id,
                    'goods_main_id' => $k,
                    'goods_num' => $cart->goods_num + $v
                ];
            } else {
                $updateArr[] = [
                    'goods_main_id' => $k,
                    'goods_num' => $v
                ];
            }
        }
        if (!empty($updateArr)) {
            $user->cart()->saveAll($updateArr);
        }
        session('cartList', null);
    }
}

分析

添加購物車有兩種一情況,一種是用戶已經登錄,另一種是沒有登錄。登錄的可以直接寫入數據庫,沒有登錄的可以用session保存。為了兼容兩種情況,所有操作都判斷了用戶是否登錄。還要考慮用戶原本購物車里已經有產品,在沒有登錄前購物車里也有產品,在用戶登錄時需要進行合并操作,上面有代碼可以參考。

保存到session的數據格式和用thinkphp6從數據庫里取出的數據格式是不一樣的,為了方便類的調用,也做了相應的處理。

購物車里只保存了產品的ID和數量。

雖然很簡陋,但這也是我能想出來的最好的了,一起加沒。

最后修改:2025-09-13 08:01:24

非特殊說明,本博所有文章均為博主原創。

亚洲欧美日韩国产综合在线_国产av无码专区亚洲av桃花庵_亚洲国产欧美在线看片一国产_久久精品国产亚洲Aⅴ香蕉
<button id="g80sy"></button>
  • <abbr id="g80sy"></abbr>
  • <button id="g80sy"></button>
    <rt id="g80sy"><delect id="g80sy"></delect></rt>
  • 日韩电影在线一区二区三区| 韩国欧美国产1区| 日韩一本二本av| 欧美日韩国产精选| 91麻豆swag| 一本高清dvd不卡在线观看| 成人激情av网| av资源网一区| 色香蕉久久蜜桃| 色综合久久综合网| 欧美色图12p| 欧美一区二区三区小说| 欧美videossexotv100| 精品国产乱码久久久久久1区2区| 日韩欧美一级在线播放| 欧美va天堂va视频va在线| 精品国产乱码久久| 色综合色综合色综合| 高清日韩电视剧大全免费| 国产丶欧美丶日本不卡视频| 国产精品99久久久| 国产成+人+日韩+欧美+亚洲| 成人一区二区三区在线观看| 不卡免费追剧大全电视剧网站| 91污在线观看| 欧美裸体一区二区三区| 精品美女在线观看| 久久久99免费| 亚洲欧美日韩人成在线播放| 亚洲综合网站在线观看| 日韩精品91亚洲二区在线观看| 久久成人免费网站| 99久久免费视频.com| 欧美日韩国产电影| 国产欧美日韩在线| 亚洲小说欧美激情另类| 国产一区二区三区电影在线观看| heyzo一本久久综合| 欧美美女喷水视频| 亚洲国产精品t66y| 亚洲一区在线观看免费观看电影高清| 免费成人美女在线观看| 成人一区二区在线观看| 欧美三级日韩在线| 国产日韩欧美电影| 丝袜a∨在线一区二区三区不卡| 国产一区二区视频在线播放| 欧洲一区二区av| 国产欧美一区二区三区鸳鸯浴| 亚洲综合色视频| 国内精品在线播放| 欧美图区在线视频| 国产精品人人做人人爽人人添 | 欧美一二三四区在线| 国产精品嫩草影院com| 午夜av一区二区三区| 成人av中文字幕| 精品区一区二区| 亚洲第一在线综合网站| 国产成人精品影院| 精品奇米国产一区二区三区| 五月天久久比比资源色| 色噜噜狠狠色综合中国| 日本一区二区动态图| 日本欧美一区二区| 欧美日韩国产高清一区二区| 亚洲免费av观看| 成人黄色大片在线观看| 久久亚洲一级片| 裸体在线国模精品偷拍| 91精品婷婷国产综合久久竹菊| 亚洲少妇30p| 成a人片国产精品| 欧美国产日韩精品免费观看| 国产精品综合在线视频| 久久色在线视频| 国产乱码精品一区二区三区忘忧草| 日韩欧美一级在线播放| 免费不卡在线视频| 欧美一级夜夜爽| 久久国产欧美日韩精品| 精品精品欲导航| 国产一区二区三区蝌蚪| 国产亚洲精品精华液| 看片的网站亚洲| 精品福利在线导航| 国产精品乡下勾搭老头1| 日本一区二区三区在线观看| 国产精品亚洲人在线观看| 国产性天天综合网| 99视频一区二区| 一区二区三区免费看视频| 欧美日韩中文精品| 蜜臀av一区二区三区| 久久免费午夜影院| av激情亚洲男人天堂| 亚洲免费观看高清完整版在线观看 | 成人精品视频一区| 国产精品久久精品日日| 在线观看日韩国产| 免费人成黄页网站在线一区二区| 日韩情涩欧美日韩视频| 国产成人在线观看免费网站| 国产精品全国免费观看高清 | 亚洲欧美国产毛片在线| 精品视频在线视频| 韩国午夜理伦三级不卡影院| 中文字幕国产一区二区| 欧美伊人久久久久久午夜久久久久| 日韩av不卡一区二区| 久久色视频免费观看| 99精品欧美一区| 日韩中文字幕1| 久久精品一区二区三区不卡| 色狠狠一区二区三区香蕉| 日韩av电影免费观看高清完整版| 久久久午夜精品| 欧洲一区二区三区在线| 激情综合网最新| 亚洲免费在线视频| 精品久久久久99| 色婷婷综合久久久| 国产综合久久久久影院| 亚洲激情男女视频| 久久色中文字幕| 欧美三区在线观看| 高清国产一区二区三区| 日韩不卡免费视频| 亚洲欧美乱综合| 久久精品人人做| 91精选在线观看| 色视频成人在线观看免| 国产激情精品久久久第一区二区| 亚洲一卡二卡三卡四卡五卡| 国产无人区一区二区三区| 91麻豆精品久久久久蜜臀| 91美女片黄在线| 国产在线精品免费| 天堂av在线一区| 一区二区免费视频| 国产精品成人网| 国产情人综合久久777777| 欧美成人a视频| 67194成人在线观看| 欧洲精品在线观看| 成人av网站在线观看| 国产一区亚洲一区| 青青草国产精品97视觉盛宴| 亚洲精品成a人| 亚洲区小说区图片区qvod| 国产日韩欧美不卡在线| 2024国产精品| 精品粉嫩超白一线天av| 欧美一区二区网站| 欧美精品777| 欧美精品视频www在线观看| 欧洲一区二区三区在线| 91黄色免费观看| 色婷婷av一区二区三区软件| jlzzjlzz国产精品久久| www.亚洲在线| 97久久精品人人做人人爽50路| 成人av网站免费观看| 成人一区二区三区视频| 成人综合在线观看| eeuss鲁一区二区三区| 成年人国产精品| 97精品国产露脸对白| 91在线视频官网| 日本韩国一区二区三区| 91久久香蕉国产日韩欧美9色| 91老司机福利 在线| 91九色02白丝porn| 欧美挠脚心视频网站| 日韩一区二区三区视频在线| 欧美大片国产精品| 久久亚洲二区三区| 欧美国产日韩一二三区| 亚洲人成伊人成综合网小说| 伊人色综合久久天天| 天天综合天天做天天综合| 久久精品国产第一区二区三区| 国内国产精品久久| 成人一区二区三区在线观看| 91网站最新网址| 欧美日韩电影在线播放| 日韩欧美黄色影院| 中文av一区二区| 亚洲一区视频在线| 久久精品国产色蜜蜜麻豆| 国产精品系列在线观看| 91在线观看成人| 欧美日韩日本视频| 精品国产乱码久久久久久1区2区| 国产日韩欧美麻豆| 亚洲午夜久久久久久久久电影网 | 国产在线一区观看| 97精品国产97久久久久久久久久久久 | 欧美日本在线一区| 久久奇米777|