راکت
حل شده

تنوع قیمت در محصولات براساس رنگ یا سایز محصول

3 پاسخ

سلام آقای موسوی . من در دوره آموزش پروژه محور لاراول شما شرکت کرده ام ولی به یه موضوع مهم نپرداختید.
به چه شکل میشه تنوع قیمت بر اساس سایز یا رنگ پیاده کرد؟ مثلا بشه برای سایز large قیمت بیشتری نسبت به سایز small قرار داد و این رو با سبد خریدی که شما در این دوره آموزش پروژه محور لاراول تدریس کردید پیاده کرد؟
من یه جدول مثلا به اسم prices درست کرده ام و در آن ستونهای جدول product_id , size_id, قیمت و موجودی محصول میباشد.
لطفا توضیح دهید.
@hesammousavi
@ali.bayat
@mhyeganeh

ثبت پرسش جدید

پاسخ‌ها

3
علی جعفرزاده
علی جعفرزاده
@ali.kalan

تخصص: Full-Stack Web Developer,C#,Java

بهترین پاسخ

این موضوع رو خیلی وقته حلش کردم . راهشو مینویسم شاید به درد کسی خورد.😁
اول واسم سخت اومد ولی به راحتی میشه در سایت تنوع قیمت ایجاد کرد .
من یه جدول مثلا به اسم prices ایجاد کردم که ما به التفاوت قیمت هر محصول رو ثبت میکنم داخلش دقیقا ستونهایی که در بالا هم گفته ام product_id , size_id,price قرار دادم. مثلا ما به التفاوت رنگ سفید محصول 5 هزار تومنه. و این قیمت به قیمت پایه محصول مثلا 45 هزار تومن اضافه میشه.
حالا مدیر فروشگاه از داخل خود محصول میتونه به محصول ما به التفاوت قیمت براساس سایز یا رنگ دلخواهش رو اضافه کنه.
حالا در فروشگاه با اون سبد خریدی که نوشته شده ( میتونید از پکیج های مختلف سبد خرید هم استفاده کنید فرقی نداره) موقع افزودن محصول به سبد خرید ما به التفاوت قیمت رو میگیرد با قیمت واحد جمع میکنید. و آی دی اون رنگ و سایز دلخواه رو به سبدتون اضافه میکنید کدشو در زیر مینویسم.

$total_price = $price_of_size + $product_price;
        if(! Cart::has($product)) {
            Cart::put(
                [
                    'quantity' => 1,
                    'price' => $total_price,
                    'size' =>$request->size,
                    'color' =>$request->color,
                ],
                $product
            );
        }

حالا محصول رو با رنگ و سایز دلخواه در سبد خرید داریم. توی مرحله پرداخت هم دوباره سبد رو چک میکنیم که خالی نباشه و بعد سبد خودمون رو داخل جدول orders ذخیره میکنیم.

$orderItems = $cartItems->mapWithKeys(function($cart) {
                    return [
                        $cart['product']->id => [
                            'quantity' => $cart['quantity'] ,
                            'size_id' =>intval($cart['size']),
                            'color_id' =>intval($cart['color'])
                        ]
                    ];
                });

$order->products()->attach($orderItems);

بعدش هم کاربر رو به درگاه وصل میکنیم تا پرداختش رو انجام بده .

احمد
احمد
@ahmad316948

@ali.kalan
با این روشی که شما این سیستمو پیاده کردین باگی ندیدید؟؟ من هم همین مشکلو داشتم که بر خلاف شما یه جدول colors ساختم که داخل این جدول فیلد های name و code و inventory و pricecolor قرار داره. خوب منم تونستم قیمت محصول رو بر اساس رنگ تقییر بدم. ولی یه باگ عجیب و غریب تویه سبد خرید من پیش اومده که تو این گفتگو مطرح کردم باگ در سبد خرید

میشه شما یه چک کنید ببینید این باگ تویه سبد خرید شمام هست یا نه. در ضمن سبد خرید من مثل دوره پروژه محور لاراول پیاده سازی شده.

علی جعفرزاده
علی جعفرزاده
@ali.kalan

تخصص: Full-Stack Web Developer,C#,Java

داداش بعد چهار سال الان پیامت رو دیدم ببخشید . 😂😂
کلا بهتره فرانت رو با ریکت و next بنویسی و بک اند رو با لاراول که فوق العاده اس .

شاید پاسخ شما همین‌جا باشد

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

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