علی باقری
5 سال پیش توسط علی باقری مطرح شد
14 پاسخ

ساخت بخش پکیج امکانات برای یک فروشگاه لاراولی

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

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

مثال : 
امکانات محصول :
کاغذ دیواری       3 عدد      قیمت هر عدد 120000 تومان
لامپ مهتابی       2عدد       قیمت هر عدد 100000 تومان
گلدان                 2عدد       قیمت هر عدد  50000 تومان

حالا کاربر بتونه تو صفحه مشاهده محصول امکانات رو به صورت زیر شخصی سازی کنه و تعدادشو تغییر بده :

کاغذ دیواری         1 عدد        قیمت هر عدد 120000 تومان
لامپ مهتابی        1 عدد        قیمت هر عدد 100000 تومان
گلدان                  1 عدد        قیمت هر عدد50000 تومان

به نظرتون بهترین راه برای ساخت این قسمت پکیج به چه صورته ؟ از طرفی ممکنه قیمت یک گزینه از پکیج مثلا کاغذ دیواری تغییر کنه و به عنوان مثال  50 تا پکیج هم برای محصولات مختلف ایجاد شده باشه ، در نتیجه باید این قابلیت هم باشه که قیمت گزینه ها از جایی تغییر کنه و برای همه پکیج های ایجاد شده هم اعمال بشه .

پیشاپیش ممنونم از اینکه وقت میزارید و راهنمایی میکنید . 


ثبت پرسش جدید
عرشیا سعیدی
تخصص : php ، لاراول ، وردپرس
@arshiya73arshiya 5 سال پیش مطرح شد
2

@alibagheri

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

۱- مثل بحث دسته بندی ها که همه از یک نوع هستن ولی بعضیا فرزند میشن و بعضی ها والد میشن اگه کار کرده باشی جدول تقریبا همنیه فقط یه فیلد پرنت آیدی اضافه میکنی که توی مدل هم یه رابطه داخلی براش مینویسی نسبت به پرنت آیدی

۲- یا بیای برای جدول آپشن هات یه سیستم تگ اضافه کنی و موقع ایجاد آپشن انتخاب کنی برای کدوم تگ ست بشه اینطوری مثلا میشه تگ تشک که دوتا آپشن تو رابطش وجود داره و به ادمین نمایش داده میشه مثل همین عکس و باز به همون روش قبل میتونی برای محصولاتت ست کنی آپشن ها رو


mahdi khanzadi
تخصص : backend developer at Snapp mar...
@khanzadimahdi 5 سال پیش مطرح شد
2

از mongoDB استفاده کنید. در این حالت استفاده از mysql پیشنهاد نمیشه. ساختارتون به حالت جدولی اگه بخواید در بیارید یه مقدار خوانایی برنامه پایین میاد.


علی باقری
تخصص : برنامه نویس وب
@alibagheri 5 سال پیش مطرح شد
1

سلام .
فرمایش شما متین اما بنده باید با mysql این قسمتو بسازم و دنبال روش ساختش هستم که یکم سردرگم شدم ، اگه روشی یا تجربه ای در این باره و نوع جدول هایی که باید ساخته بشه میدونید ممنون میشم راهتمایی کنید .
@khanzadimahdi


روح اله ابراهیم زاده
تخصص : PHP.LARAVEL
@rohi1386 5 سال پیش مطرح شد
2

این لینکو ببینید من همچین چیزی طراحی کردم .

که محصولات مربوط به اون محصول که انتخاب شده پیشنهاد مبده و فقط با تیک اون به سبد خریدش اضافه میشه
برای موبایل کاذت حافظه هم پیشنهاد شده و گلس و ... که کاربر میتونه انتخب کنه
https://www.tiktell.com/product/%DA%AF%D9%88%D8%B4%DB%8C-%D9%85%D9%88%D8%A8%D8%A7%DB%8C%D9%84-%D8%B3%D8%A7%D9%85%D8%B3%D9%88%D9%86%DA%AF-%DA%AF%D9%84%DA%A9%D8%B3%DB%8C-A50


علی باقری
تخصص : برنامه نویس وب
@alibagheri 5 سال پیش مطرح شد
1

ولی چیزی که من گفتم خیلی پیچیده تر از کاریه که شما انجام دادی .
ممنون میشم به جای اینکه لینک کارهاتون رو قرار بدید یک راه حل یا روش برای ساخت چیزی که میخوام پیشنهاد بدید وگرنه خودم چیز های مشابه همین رو بارها درست کردم و لینکشم دارم و اینجا لینک به کارم نمیاد و بیشتر راه حله که میتونه کمکم کنه چون مثل اینکارو با لاراول انجام ندادم تا حالا .
ممنون .
@rohi1386


Alimotreb
تخصص : کانفیگ سرور و برنامه نویس
@Alimotreb 5 سال پیش مطرح شد
2

سلام
@alibagheri

شما به نظرم باید یه سبد خرید پیشرفته بسازید
به طوری که محصولی که انتخاب میشه ، بعد توی سبد خرید
آپشن هایی زیرش باز بشه با مشخصات خودش
به صورت آبشاری
با ساختار ajax که اگر به فرض موردی انتخاب شد ، کوئری مد نظر به دیتابیس زده بشه و محاسباتش انجام بشه
با ویوو جی اس هم حرفه ای تر و شکیل تر میشه


علی باقری
تخصص : برنامه نویس وب
@alibagheri 5 سال پیش مطرح شد
1

سلام
@Alimotreb

ببینید مشکل من اصلا سبد خرید نیست !! مشکل من قسمت پنل ادمینه که اینارو به چه صورت بسازم و برای هر محصول به صورت پکیج وارد کنم و به دلیل نوسان قیمت بتونم قیمتاشون رو از یجایی تغییر بدم و برای همه محصولایی که پکیج ساختم براشون اعمال بشه .

لطفا یکبار با دقت بیشتر بخونید سوالمو متوجه منظورم بشید . ممنون


عرشیا سعیدی
تخصص : php ، لاراول ، وردپرس
@arshiya73arshiya 5 سال پیش مطرح شد
2

به نظر من شما باید یه جدول آپشن بسازی که به صورت key=>value باشه و اون فیچر هایی که کارفرما میگه اونجا قرار داده بشه مثلا توی جدول آپشن

۱-id
2-name
3-value
4-price

البته میتونی قسمت value رو هم حذف کنی

بعد این جدول با جدول محصولاتت رابطه داشته باشه رابطه چند به چند ، حالا مثلا کاغذ دیواری رو میتونی به چند محصولت ربط بدی ، و در عین حال میتونی ر قسمت ادمین قیمت هر ویژگی رو به صورت منحصر به فرد تغییر بدی ،

توی سبد خریدت هم میتونی یه آرایه در نظر بگیری به عنوان آپشن ها که یه تعداد ذخیره کنه یه آیدی آپشن و موقع محاسبه قیمت از جدول آپشن قیمتارو در بیاره اینجوری بحث نوسان قیمت در سبد خرید هم هندل میشه ،که ناگفته نماند من تحقیق کردم بهترین روش برای سبد خرید ذخیره تو دیتابیس هستش اینو کلی گفتم

امیدوارم تونسته باشم کمکی کنم


علی باقری
تخصص : برنامه نویس وب
@alibagheri 5 سال پیش آپدیت شد
1

سلام
@arshiya73arshiya
ممنون از راهنماییتون .
مشکل اینجاست هرکدوم از امکانات که توی یک پکیج وجود داره برای خودشون زیر مجموعه مادر دارن . مثلا به عکس زیر توجه کنید:
http://uupload.ir/files/24d_rtrtrt.png
دقیقا به همین شکله که مدیر باید بتونه هر کدوم رو از هر مجموعه که خواست تیکشو بزنه و تعدادشو مشخص کنه و برای محصول وارد بشه و تو صفحه محصول هم به همین شکل نمایش داده بشه و کاربر بتونه اونجا اگه امکانی رو نخواست تیکشو برداره یا تعدادشو کم کنه و در نهایت به سبد خریدش اضاف کنه .
الان تو عکس بالا 4 تا مجموعه قرار داره ولی به صورت کلی اینا 12 تا مجموعه هستند برای هر محصول .


عرشیا سعیدی
تخصص : php ، لاراول ، وردپرس
@arshiya73arshiya 5 سال پیش مطرح شد
2

@alibagheri

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

۱- مثل بحث دسته بندی ها که همه از یک نوع هستن ولی بعضیا فرزند میشن و بعضی ها والد میشن اگه کار کرده باشی جدول تقریبا همنیه فقط یه فیلد پرنت آیدی اضافه میکنی که توی مدل هم یه رابطه داخلی براش مینویسی نسبت به پرنت آیدی

۲- یا بیای برای جدول آپشن هات یه سیستم تگ اضافه کنی و موقع ایجاد آپشن انتخاب کنی برای کدوم تگ ست بشه اینطوری مثلا میشه تگ تشک که دوتا آپشن تو رابطش وجود داره و به ادمین نمایش داده میشه مثل همین عکس و باز به همون روش قبل میتونی برای محصولاتت ست کنی آپشن ها رو


علی باقری
تخصص : برنامه نویس وب
@alibagheri 5 سال پیش آپدیت شد
1

@arshiya73arshiya
منم دقیقا مثل بخش دسته بندی ها ساختمش این قسمتو و اون عکس هم الان ساخته شده که من عکسشو گزاشتم :
http://uupload.ir/files/24d_rtrtrt.png

اما مشکل من از اینجا به بعدشه که میخوام برای محصول ادش کنم و نمیدونم جدول ریلیشن رو به چه روشی بسازم؟ چون فیلد تعداد هم داره هر کدوم از امکانات پکیج و برای هر محصول تعداد امکانات ممکنه متفاوت باشه ! مثلا ممکنه گلدان برای ی محصول 2 تا باشه تو پکیج برای یکی دیگه 3 تا .
اگه بخوام ریلیشن چند به چند بزنم فقط ایدیارو میتونم بگیرم اما این وسط تعدادش داستان میشه اینو نمیدونم چیکارش کنم :/
چون من اینجوری کار کردم برای ریلیشن ها که مثلا product_id - filter_id توی ی جدول product_filter قرار میگیره که جفتشونم primary میکنم و مشخص میکنه اون فیلتر برای چه محصولایی هست اما تعداد فیلترو چیکار کنم و چجوری توی ریلیشنه وارد کنم ؟ اینو کار نکردم تا حالا .

یعنی باید 3 تا foreign key تعریف بشه به جز ایدی ها که اون سومیه تعداش باشه ؟


عرشیا سعیدی
تخصص : php ، لاراول ، وردپرس
@arshiya73arshiya 5 سال پیش آپدیت شد
2

@alibagheri

این موضوع رم میتونی از دوتا راه هندل کنی

۱ـ اگه این تعدادی که میگی فقط جنبه عددی داره و قراره توی سبد خرید ذخیره بشه میتونی با استفاده از سشن ها یا یه آرایه تو دیتا بیس تعدادشو بگیری قیمتشو در بیاری

۲ـ اگرم نه قراره توسط ادمین برای هر محصول ثبت بشه و یچیز نسبتا مهمیه میتونی توی جدول واسط بین آپشن هات و محصولاتت که این جدول واسط فقط دوتا آیدی میگیره یک یا چندتا فیلد دیگه هم اضافه کنی البته سعی کن خیلی نشه در حد همون یکی دوتا باشه بهینه تره

اینجوری میشه مثلا
۱ـ tag_id
2_product_id
3_cuont

حالا این cuont که میگم چطور باید باهاش رفتار کنی ؟ اینجور فکر کن بهش که tagable_type یه چیزیه مثل همین cuont میشه

سرچ کنی متوجه میشی چطور باید این کارو انجام بدی حالا اگه منم وقت کردم یه لینک پیدا میکنم برات میفرستم


علی باقری
تخصص : برنامه نویس وب
@alibagheri 5 سال پیش آپدیت شد
1

@arshiya73arshiya
درسته ، اگه بخوام توی جدول واسط 1 گزینه دیگه مثل زیر اضاف کنم اونوقت چطوری باید اطلاعات رو وارد کنم ؟
مثلا اگه بخوام ی count بهش اضاف کنم چجوری باید به جدول واسط وارد کنم و بگم این count برای کدوم یکیه ؟

۱ـ filter_id
۲_product_id
۳_cuont

چون من الان اینجوری سینک میکنم . حالا بخوام تعداد count رو اضاف کنم به این چه شکلی میشه ؟
$product->filterbuild()->sync($request->fild_id);


عرشیا سعیدی
تخصص : php ، لاراول ، وردپرس
@arshiya73arshiya 5 سال پیش مطرح شد
1

@alibagheri

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

https://stackoverflow.com/questions/30500492/laravel-many-to-many-polymorphic-relation-with-extra-fields


علی باقری
تخصص : برنامه نویس وب
@alibagheri 5 سال پیش آپدیت شد
1

@arshiya73arshiya
دقیقا من اینکارو که تو لینک بالا گفته انجام دادم و withpivot تو مدل اضاف کردم اما اینجا گفته که ارتباطی بهش نداره .
که بعد فهمیدم باید اسم تیبل مشترک رو هم به مدلم بدم قبل اینکه pivot اضاف کنم یعنی این شکلی :
return $this->belongsToMany(Product::class,'filterbuild_product')->withPivot('count');

در هر صورت مشکلم اینجوری حل میشد و ممنون از اینکه راهنمایی کردی چون من ریلیشن هارو به این شکل انجام ندادم و الان متوجه شدم داده اضافیو باید چجوری وارد کنم .
ممنونم .


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

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