精品无码在线视频_激情视频在线观看_一区二区在线观看视频在线观看_国产一卡二卡在线播放_国产精品夜夜嗨_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

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

成人免费网站在线观看| 中老年在线免费视频| 成人精品视频在线| 国产一区二区久久| sedog在线观看| 成人网址在线观看| 欧美视频网站| 欧美精品xx| 欧美久久久久免费| 粉嫩一区二区三区在线观看| 国产三级视频网站| 精品国产一区探花在线观看| 日本在线观看a| 国产精品嫩草99av在线| 亚洲精品在线视频播放| 18加网站在线| 91综合在线| 9.1片黄在线观看| 日本乱码高清不卡字幕| 热99精品视频| 精品久久久网站| 天堂а√在线8种子蜜桃视频| 国产97在线|日韩| 国产 日韩 欧美| 国产在线视频99| 亚洲国产成人在线视频| 自拍视频在线免费观看| 日韩免费中文专区| 久久人人88| 丁香六月激情综合| 精品国产电影一区二区| 亚洲mv在线| 中国黄色录像片| 清纯唯美日韩| 国产做受高潮漫动| 亚洲图片欧美日产| 国产蜜臀在线| 国产乱女淫av麻豆国产| 中文字幕的久久| 18free性欧美另类hd| 欧美—级a级欧美特级ar全黄| 68国产成人综合久久精品| 国产午夜福利精品| 亚洲国产精品嫩草影院久久| 成人影院在线看| 色国产在线视频| 亚洲性夜色噜噜噜7777| 亚洲一区日韩精品中文字幕| 日韩极品在线观看| 日韩精品久久| 福利影院在线看| 白白色视频在线| 国产草草浮力影院| 欧美成在线视频| 精品999网站| 高清福利在线观看| 国产精品7777777| 久久精品国产精品国产精品污 | 1024国产精品| 亚洲男人资源| 国产精品视频一区二区三区,| 中文字幕の友人北条麻妃| 精品国产91久久久久久老师| 免费成人高清在线视频theav| 成年人免费网站| 午夜免费福利视频| 天天综合狠狠精品| 在线观看视频91| 日韩在线观看| 极品尤物av丝袜美腿在线观看| 国产伦理在线观看| 日韩av片免费在线观看| 亚洲欧美色一区| 自拍在线观看| 欧美色图亚洲| 中文精品在线观看| 五月天开心婷婷| 国产欧美日韩一区二区三区| 一区二区三区国产精品| 欧美天天综合| 无遮挡动作视频在线观看免费入口| 欧美又黄又嫩大片a级| 精品视频一区二区| 亚洲第一福利网| 亚洲精品a区| 99精品视频免费看| 亚洲一区二区三区四区视频| 麻豆精品久久久| 国产黄色免费网| 三区视频在线观看| 国产丝袜一区二区三区| 国产精品亚洲人成在99www| 欧洲精品久久一区二区| 日韩欧美亚洲区| 亚洲成人精品在线观看| 久久99久久久精品欧美| 中文字幕观看视频| 97视频中文字幕| 亚洲一区二区视频在线观看| 国产探花视频在线观看| 嫩草影院一区二区三区| 亚洲午夜电影网| 制服丝袜在线一区| 久久综合给合久久狠狠色| 中文字幕一区二区三| 在线中文字幕视频观看| 免费无码国产精品| 成人做爰69片免费| 国产一区在线免费| 在线观看91视频| 青青草精品视频| 成年视频在线观看| 久久这里只有精品国产| 亚洲aⅴ男人的天堂在线观看| 午夜精品成人在线| 天天色图综合网| 亚洲自拍偷拍av| 亚洲综合偷拍欧美一区色| 久久精品夜色噜噜亚洲aⅴ| 欧美日韩网站| 美女少妇全过程你懂的久久| 中中文字幕av在线| 在线观看av中文| 成年人羞羞的网站| 精品偷拍激情视频在线观看| 久草资源在线视频| 欧美不卡视频一区| av一区二区三区在线| 免费一区二区| 中文字幕在线看片| 欧美成人二区| 麻豆网站在线观看| 97电影在线观看| 黄视频在线观看免费| 天天综合天天操| free亚洲| 日日夜夜av| 特级西西444www| 国产日本欧美一区二区三区| 亚洲3atv精品一区二区三区| 久久国产麻豆精品| 1区2区在线观看| 天天干在线观看| 深田咏美中文字幕| 国内精品在线观看视频| 国产自产在线视频一区| 九九热精品在线观看| 国产精品美女黄网| 国产欧亚日韩视频| 国产国语videosex另类| 日韩国产在线播放| 久久综合九色综合97_久久久| 国产精品一区二区三区四区在线观看| av先锋下载| 一级特黄录像免费看| 亚洲成人精品视频| 蜜桃视频免费观看一区| 狠狠色噜噜狠狠狠狠97| 4p变态网欧美系列| 欧美精品一区免费| www..com.cn蕾丝视频在线观看免费版| 国产精品免费无遮挡| www污网站在线观看| 成人精品一区二区三区校园激情| 免费成人黄色| 国产69精品久久| 欧美日韩色图| 久久av日韩| 91国内精品| 国产专区一区| 韩国成人福利片在线播放| 国产成人综合精品三级| 欧美丝袜一区二区三区| 精品久久久久久久久久久久久| 中文字幕视频一区| 亚洲欧美日韩在线不卡| 亚洲精品免费在线观看| 色综合天天综合色综合av| 欧美一区二区三区男人的天堂| 亚洲精品www久久久久久广东| 中文字幕在线看视频国产欧美在线看完整 | 九色在线观看视频| 亚洲精品一级二级| 精品一区二区三区免费播放| 欧美巨大另类极品videosbest | 嫩草www视频在线观看高清| 波多野结衣在线影院| 亚洲国内自拍| 欧美一二三区在线| 成人精品久久一区二区三区| 四川一级毛毛片| 日韩一区二区视频在线| 亚洲国产成人私人影院| 欧美日本韩国一区二区| 国产福利视频在线| 在线欧美一区| 亚洲免费影院| 久久婷婷av| 色哟哟亚洲精品| 日韩成人在线观看|