سلام دوستان
اگر بخوایم یک فروشگاه مثل دیجی کالا که کالاهای متفاوت با ویژگی های متفاوت داره بسازیم باید برای هر دسته بندی از کالاها جدول جدا با فیلد های جدا ساخت؟
در قسمت جست و جوی پیشرفته چجوری باید بر اساس فیلد های مربوط به هر دسته بندی فیلتر کرد؟
اگر درست متوجه منظورتون شده باشم و منظورتون پیاده سازی چیزی مثل بخش مشخصات فنی محصولات هست، شاید راه های زیادی داشته باشه پیاده سازیش. پیشنهاد بنده استفاده از رابطه Many To Many بین products (محصولات) و properties (مشخصات فنی) هست.
یعنی سه تا جدول زیر رو خواهید داشت:
- products
- properties
- product-property
و کافیه یک فیلد اضافه هم به جدول واسط یعنی product-property اضافه کنید برای ذخیره value هر یک از این property ها. یعنی ستون هاش میشن:
- id
- product_id
- porperty_id
- value
برای جستجو و فیلتر هم کافیه بعد از نوشتن متدهای برقراری Relation در مدل هاتون، چک کنید که کدوم یک از محصولات اون مشخصه فنی اولا براشون تعریف شده و ثانیا برابر با value مورد نظر هست.
@mhyeganeh
یعنی جدول properties باید همه مشخصات همه دسته بندی محصولات رو داشته باشه؟
اون مقدار value تو جدول واسط رو متوجه نشدم برای چیه
یکسری از خصوصیات بین همه محصولات مشترک هست که اونارو توی جدول products ذخیره میکنی. اما محصولاتی هستن که علاوه بر خصوصیات مشترک با سایر محصولات یکسری خصوصیات منحصر به فرد دارند و برای ذخیره خصوصیات منحصر به فردشون برحسب دسته بندی شون براشون خصوصیات تعریف کرده و در یک جدولی خصوصیاتشونو ذخیره میکنی. تبعا هر دسته بندی خصوصیات خاص خودشو داره و باید فرم هاشون منحصر به فرد باشه اما شما که نمیتونی برای فرض هزار محصول هزار تا فرم درست کنی. مثالی میزنم: اگر شما بخوای مشخصات منحصر به فرد گوشی موبایلو سیو کنی در ابتدا در صفحه فرم دسته بندی گوشی موبایلو انتخاب میکنی بعد یه سرچ در جدول خصوصیات منحصر به فرد زده شده و تمام خصوصیات گوشی موبایلو خونده و برحسب نوع خصوصیت فرم مربوطه با کنترلرهاش ساخته شده. در اینجا جستجو در جدول properties زده میشه بعد از پر کردن فرم مربوطه و ارسال مقادیر در جدول product-property سیو میشن.
یعنی جدول properties باید همه مشخصات همه دسته بندی محصولات رو داشته باشه؟ همه رو نه.در بالا هم اشاره کردم یکسری از مشخصات که بین همه مشترکه مثل قیمت و .... اما یکسری برای هر دسته بندی خاصه. مثل گوشی موبایل و یک جفت دمپایی یک خصوصیاتی مشترک و یه خصوصیاتی مشترک نیست خصوصیات نامشترک رو در جدول properties ذخیره میکنی.
اون مقدار value تو جدول واسط رو متوجه نشدم برای چیه: خوب هر خصوصیت در هر دسته بندی برای هر محصول طبعا یه مقداری داشته باشه که برای ذخیره اون مقدار از جدول product-property با فیلدی value استفاده میشه.
البته تمام ماجرا این که گفتیم نبود یه جزئیاتی هم هست که گفته نشده اما کار سختی هم نیست با مقداری مطالعه و سوال پرسیدن میشه انجامش داد. در دوره پروژه محور لاراول این مورد کامل گفته شده.
@hosseinshirinegad98
توی دوره پروژه محور راکت این مورد که شما فرمودید توضیح داده شده؟
جست و جوی پیشرفته هم توضیح داده شده کامل؟؟
ثبت مشخصات برای محصولات توضیح داده شده اما متاسفانه جستجوی پیشرفتش که تو سرفصل های این دوره گفته نشده. من این دوره رو خریدم و هنوز به اون بخشش نرسیدم. میتونید به حسام پیام بدید و بیشتر در جزئیات کار قرار بگیرید. من این قسمت ثبت ویژگی و جستجوی پیشرفتشو در یک سایت دیگه در قالب طراحی سایت دیجی کالا خوندم . ادرسش سایت ایده پردازان جوان بود. 120 ساعت فیلم اموزشی پیاده سازی سایت دیجیکالا. قیمت 350 تومن. تخفیف 40 درصدی هم داشت
یعنی جدول properties باید همه مشخصات همه دسته بندی محصولات رو داشته باشه؟
بله. هر مشخصه فنی که وجود داره اینجا تعریف میشه. حالا اگر میخواید برای هر دسته بندی هم بصورت خاص تعریف کنید که فلان مشخصات فنی وجود داشته باشند، کافیه علاوه بر رابطه بین products و properties که قبلا عرض کردم، یک رابطه Many to Many هم بین categories و properties ایجاد کنید.
اون مقدار value تو جدول واسط رو متوجه نشدم برای چیه؟
همون طوری که جناب شیری نژاد هم اشاره کردند، برای ذخیره مقدار اون مشخصه فنی هست. هر مشخصه فنی یک label داره که در جدول properties تعریف میشه و یک value داره که در جدول واسط محصول و مشخصه فنی تعریف میشه. مثلا وزن: ۱۲۶ گرم / رنگ: قرمز / ظرفیت باتری: ۳۵۰۰
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟