精品无码在线视频_激情视频在线观看_一区二区在线观看视频在线观看_国产一卡二卡在线播放_国产精品夜夜嗨_mm131亚洲精品_香蕉一区二区_国产精品一二三在线观看_伊人久久高清

thinkphp6構建購物車類

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

如何用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-11-19 20:22:26

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

青娱乐精品视频| 国产欧美一区二区视频| 国产精品入口免费视频一| 91九色蝌蚪嫩草| 亚洲午夜一区二区三区| 色综合咪咪久久网| 久久一综合视频| 国产亚洲欧洲一区高清在线观看| 亚洲精品成人a在线观看| 69堂国产成人免费视频| 久久精品在线视频| 亚洲最大的av网站| 91精品国产吴梦梦| 激情 小说 亚洲 图片: 伦| 性高潮久久久久久久| 欧美精品一二三四区| 中文字幕国产欧美| 完整版免费av片| 天堂аⅴ在线地址8| 国产成+人+综合+亚洲欧美| 日韩精品永久网址| 国产精品综合二区| 亚洲国产精品久久不卡毛片| 亚洲摸下面视频| 成人久久一区二区| 国产原创popny丨九色 | 亚洲桃花岛网站| 国产一区玩具在线观看| 国产经典久久久| 久久久亚洲av波多野结衣| 一区精品在线观看| 色先锋av资源在线| 天堂av中文在线观看| 亚洲成av人电影| 久久女同精品一区二区| 欧美变态tickling挠脚心| 国产精品高清免费在线观看| 国产真人做爰毛片视频直播| 伊人影院综合网| 欧美熟妇交换久久久久久分类| 日本欧洲一区| 国产精品18| 免费观看30秒视频久久| 色婷婷av一区二区三区gif| 久久久久久免费精品| 女人床在线观看| 欧美国产精品一二三| 日韩中文字幕免费| 97久草视频| av地址在线观看| 国产理论视频在线观看| 中文字幕第12页| 欧美视频二区欧美影视| 国产一区二区日韩精品| 91精品久久久久久久久99蜜臂| 国产精品成人久久久久| 麻豆一区二区三区视频| 一级片视频网站| 在线观看麻豆视频| 少妇真人直播免费视频| 日本黄色大片视频| av网站在线免费观看| 国产一区不卡| 国产精品久久久久久久久久久免费看| 伊人青青综合网站| 天天综合中文字幕| 青娱乐免费在线视频| 免费看黄色网址| 伊人久久大香| 99热国产精品| 一本色道久久综合亚洲精品小说| 一区在线电影| 中文字幕亚洲精品一区| 天堂аⅴ在线最新版在线| 欧美性感美女一区二区| 亚洲一区二区三区中文字幕 | 天天色综合社区| 国产suv精品一区二区69| 成年午夜在线| 一区精品久久| 日韩一区二区三区视频在线 | 成人午夜大片| 中文字幕乱码久久午夜不卡| 欧美成人激情视频| 中文字幕国产免费| 8x8x拔插拔插影库永久免费| 色多多在线观看| 国产精品一区二区三区网站| 中文字幕日韩精品在线| 国产三区在线视频| 亚洲免费成人网| 日本不卡网站| 99在线精品观看| 欧美剧在线观看| 天天操夜夜操很很操| 亚洲成人日韩在线| 国产成在线观看免费视频| 日韩色性视频| 中文字幕欧美日韩一区| 国产成人在线亚洲欧美| 老鸭窝一区二区| 先锋影音av资源站| 91日韩视频| 欧美久久久久中文字幕| 综合久久国产| a级片在线视频| 蜜臀国产一区| 国产精品不卡在线| 高清不卡日本v二区在线| 日本天堂网在线观看| 成人在线观看网站| 久久精品国产**网站演员| 精品国产一区二区三区久久久| 污污视频在线免费| 成年网站免费视频黄| 色中色综合网| 日韩女同互慰一区二区| 欧美 日韩精品| 国产麻豆精品视频一区二区 | 色欧美88888久久久久久影院| 午夜精品区一区二区三| 亚洲精品久久久狠狠狠爱| 91视频成人| 一本色道**综合亚洲精品蜜桃冫| 国产又爽又黄ai换脸| 少妇高潮一区二区三区99小说| 欧美激情精品| 伊人久久大香线蕉综合四虎小说| 国产综合久久久久久久久久久久| 97在线视频国产| 久久嫩草捆绑紧缚| a黄色在线观看| 91亚洲精华国产精华精华液| 91麻豆桃色免费看| 国产午夜无码视频在线观看| 高清电影一区| 婷婷成人激情在线网| 五月天激情图片| 国产精品一区牛牛影视| 一区二区影院| 久久伊人精品视频| 精品国产无码在线观看| 四虎久久免费| 国产精品电影一区二区三区| 亚洲电影网站| 欧美激情性xxxxx| 狠狠色综合网| 97视频国产在线| 欧美三级午夜理伦| 丁香婷婷久久| 91精品国产免费久久综合| 青娱乐精品在线| 性色av一区| 欧美高清在线一区二区| 亚洲精品高清视频| 精品一区二区在线欧美日韩| 亚洲福利一区| 国产精品欧美风情| www.亚洲天堂.com| 日韩成人精品一区| 九九热这里只有在线精品视 | 久久中文字幕在线视频| 一区二区三区免费播放| 超碰在线首页| 国产视频一区在线播放| 亚洲欧美日韩精品综合在线观看| 国产免费av网站| 日本不卡一区二区三区| 91精品久久久久久蜜桃| 四虎成人永久地址| 国产农村妇女毛片精品久久莱园子 | 99.玖玖.com| 成人精品免费看| 日韩在线观看电影完整版高清免费| 国产欧美日本亚洲精品一4区| 日韩1区2区3区| 国内精品**久久毛片app| 欧美黑人乱大交ⅹxxxxx| 天堂精品中文字幕在线| 91精品啪aⅴ在线观看国产| 亚洲欧美日本在线观看| 在线观看亚洲| 91影视免费在线观看| 日韩欧美在线视频一区二区| 青青草国产成人av片免费| 久久资源av| jizzwww| 欧美三区视频| 欧美精品三区| 日韩精品91亚洲二区在线观看 | 日韩精品一区二区三区色偷偷 | 国产成人免费视频网站| 国产成人小视频| 国产精品88久久久久久| 亚洲第一福利专区| www.亚洲一二| 欧美激情电影| 久久久久99| 99re视频精品| 91视频.com|