سلام دوستان در پروژه لاراول من از مبحث 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 محصول هست
سلام و عرض ادب
برای مدیریت بهتر سبدخرید
بهتره که از 2 تا جدول برای سبدخرید استفاده کنید
یکیش برای سبد خریدی که برای کاربر فعال هست (ممکنه کاربر 10 تا سبد خرید داشته باشه و فقط یکیش فعال باشه و این سبدخرید ها هم یه کد سبد داشته باشه .)
و یکیش هم محصولات و ویژگی هایی که اضافه کرده . که اینجا ایدی و یا کد سبد خرید هم اضافه میشه که برای این سبد خرید ه
اینطوری راحت تر میتونی مدیریتش کنی و اینکه برای ویژگی محصول بهتره که یه جدول ثانویه داشته باشی
حال در مورد مشکلی که داری باید عرض کنم خدمتت که یه عکس از ستون های دیتابیست بفرست.
من اصلا تا قبل پرداخت محصولی داخل دیتابیس ذخیره نمیکنم دوست عزیزم در session ذخیره میشه بعد از پرداخت در یک جدول ثانویه ذخیره میشه محصول و تعدادش
همینطور که در دی دی میبینید من الان یک item در سبد خریدم دارم
قبل از هر چیز این کار شما که همه ی لاجیک رو داخل مدل نوشتید اشتباهه و برای این مسائل شما باید از اینترفیس کمک بگیرید و کلاس جداگونه داشته باشید.
و من به این صورت اینکارو انجام میدم که میگم اگر این محصول داخل session وجود داشت و attribute هایی که باهاش پاس داد میشه مقدار هاشون یکی نبود یکی دیگه از این محصول با مقادیر جدید داخل سبد خرید اضافه کن و اگر هم مقدار ها یکی بود تعداد رو ببر بالا
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟