مرضیه
3 سال پیش توسط مرضیه مطرح شد
3 پاسخ

تغییر در سبد خرید لارارول

سلام دوستان در پروژه لاراول من از مبحث Session برای اضافه شدن محصولات به سبد خرید استفاده کردم
در بخش مدل ها Card.php ایجاد شده که محصولات رو در سبد قرار میده با تجه به تعداد و قیمت و تخفیف ها مراحل رو انجام میده کاملا صحیح مشکل اینجاست که هر محصولی که آیدی یکسانی داشته باشه هرچقدر که به سبد اضافه شه به عنوان یک آیتم در نظر میگیره و فقط تعداد همون محصول در سبد تغییر میکنه مپلا از محصول با آیدی 4 ،ده عدد در سبد خرید هست مشکلم اینجاست من محصولاتم رنگبندی داره و میخوام جدا جدا محصولات رو نشون بده نه یک آیتم با تعداد
توضیح تصویر رو وارد کنید

همینطور که در عکس مشخصه یک محصول با تعداد سه و رنگ خاکستری در صورتی که این محصول با رنگ های دیگه هم ادد شده به سبد
چجوری میتونم محصولات رو جدا کنم و به صور یک آیتم نشون بدم

<?php

namespace App;

class Cart
{
    public $items = null;
    public $totalQty = 0;
    public $totalPrice = 0;
    public $totalPrice2 = 0;
    public $totalPricewithtransportation = 0;
    public $totalDiscountPrice = 0;
    public $totalPurePrice = 0;
    public $couponDiscount = 0;
    public $coupon = null;
    public $transportation = 25000;
    public $color = 0;

    public function __construct($oldCart)
    {
        if($oldCart){
            $this->items = $oldCart->items;
            $this->totalQty = $oldCart->totalQty;
            $this->totalPrice = $oldCart->totalPrice;
            $this->totalPurePrice = $oldCart->totalPurePrice;
            $this->totalDiscountPrice = $oldCart->totalDiscountPrice;
            $this->transportation = $oldCart->transportation;
            $this->color = $oldCart->color;

        }
    }

    public function add($item, $id ,$color )
    {

        if($item->discount_price){
            $storedItem = ['qty'=> 0,  'price' => $item->discount_price, 'item' => $item , 'color'=> $color,];
        }else{
            $storedItem = ['qty'=> 0,   'price' => $item->price, 'item' => $item , 'color'=> $color,];
        }
        if($this->items){
            if(array_key_exists($id,$this->items)){
                $storedItem = $this->items[$id];
            }
        }
        $storedItem['qty']++;
        if($item->discount_price){
            $storedItem['price'] = $item->discount_price * $storedItem['qty'];
            $this->totalPrice += $item->discount_price;
            $this->totalDiscountPrice += ($item->price - $item->discount_price);
        }else{
            $storedItem['price'] = $item->price * $storedItem['qty'];
            $this->totalPrice +=$item->price;
        }
        $this->items[$id] = $storedItem;
        $this->totalQty++;
        $this->color[$color];
        $this->totalPurePrice += $item->price;
        $this->totalPricewithtransportation += ($this->totalPrice  + $this->transportation);
    }

}

ممنون میشم راهنمایی کنید در کد بالا منظور از items محصول هست


ثبت پرسش جدید
parsa parasteh
تخصص : Fullstack Developer
@parsaparasteh 3 سال پیش مطرح شد
0

سلام و عرض ادب

برای مدیریت بهتر سبدخرید
بهتره که از 2 تا جدول برای سبدخرید استفاده کنید
یکیش برای سبد خریدی که برای کاربر فعال هست (ممکنه کاربر 10 تا سبد خرید داشته باشه و فقط یکیش فعال باشه و این سبدخرید ها هم یه کد سبد داشته باشه .)
و یکیش هم محصولات و ویژگی هایی که اضافه کرده . که اینجا ایدی و یا کد سبد خرید هم اضافه میشه که برای این سبد خرید ه
اینطوری راحت تر میتونی مدیریتش کنی و اینکه برای ویژگی محصول بهتره که یه جدول ثانویه داشته باشی

حال در مورد مشکلی که داری باید عرض کنم خدمتت که یه عکس از ستون های دیتابیست بفرست.


مرضیه
تخصص : طراح رابط کاربری،برنامه‌نویس
@marziehkhani 3 سال پیش مطرح شد
0

من اصلا تا قبل پرداخت محصولی داخل دیتابیس ذخیره نمیکنم دوست عزیزم در session ذخیره میشه بعد از پرداخت در یک جدول ثانویه ذخیره میشه محصول و تعدادش

توضیح تصویر رو وارد کنید

همینطور که در دی دی میبینید من الان یک item در سبد خریدم دارم


عرفان مهدوی
تخصص : Full-stack web developer
@erfanmahdaviwd 3 سال پیش مطرح شد
0

قبل از هر چیز این کار شما که همه ی لاجیک رو داخل مدل نوشتید اشتباهه و برای این مسائل شما باید از اینترفیس کمک بگیرید و کلاس جداگونه داشته باشید.
و من به این صورت اینکارو انجام میدم که میگم اگر این محصول داخل session وجود داشت و attribute هایی که باهاش پاس داد میشه مقدار هاشون یکی نبود یکی دیگه از این محصول با مقادیر جدید داخل سبد خرید اضافه کن و اگر هم مقدار ها یکی بود تعداد رو ببر بالا


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام