Saman
2 سال پیش توسط Saman مطرح شد
7 پاسخ

ایجاد مشخصات محصول با نوع دلخواه برای همه محصولات -EAV منظورم نیست

با سلام و احترام فراوان خدمت شما

من در لاراول قصد پیاده سازی قابلیت input دلخواه ، مانند text,number,checkbox به عنوان ویژگی و نمایش در صفحه ایجاد همه ی محصولات را دارم (یعنی ویژگی های ایجاد شده برای همه محصولات هست) ، به طوری که در صفحه ویرایش هم این موارد باشه + اینکه مواردی که در زمان ایجاد محصول وارد شده در صفحه ویرایش مقدارشان نشان داده بشه

به طور کل اگر من بخوام همچین ساختاری برای ایجاد محصولات داشته باشم طراحی جدول دیتابیس و روابط آن به چه صورت میشه (برای ذخیره سازی و دریافت در controller به چه صورت عمل کنم) و دوم اینکه اگر من بخوام محصولی که از قبل ایجاد کردم رو در صفحه ویرایش همه Input ها رو داشته باشم با ابن توضیح که موارد که در زمان ایجاد انتخاب یا مقدار دهی شده باشه و اگر خواستم بتونم موارد جدید رو هم اضافه و ذخیره کنم

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

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


ثبت پرسش جدید
رضا جوان
تخصص : مدیر IT
@rj2mcode 2 سال پیش مطرح شد
0

اگر بخواهید مقدار فیلد های ورود مثل TEXTBOX زمانی که فرم ویرایش رو باز میکنید با مقادیر قبلی که در دیتابیس ذخیره شده نشون بدید باید
زمانی که فرم رو صدا میزنید که نشون بده باید دیتای مورد نیازتون رو فراخوانی کنید و به فرم پاس بدید مثل نمونه
;profileDatas = User::find(Auth::user()->id)$
;return view('profile',compact('profileDatas'))
profileDatas مقدار متغیری هست که به فرمی که میخوای نشون بدی پاس میدی. بعد توی اون فرم مقصد مقادیر رو دریافت میکنی و داخل value هر input نشون میدی .


Saman
@saman3230 2 سال پیش آپدیت شد
0

@rj2mcode : جناب جوان بسیار ممنون از توضیحاتتون ، اما فکر میکنم شما متوجه عرض بنده نشدین

اصلا ما اینطوری به مشکل نگاه کنیم که شما در زمان ایجاد محصول 4 تا input دارین که فقط اسم دارند

مثلا :
رنگ :
تعداد در :
تعداد پایه:

خب طبیعی که هر مقداری میتونه وارد بشه
در زمان ویرایش محصولات چطوری می تونم مقداری که برای این محصول (دقت بفرمایید همین محصول) در زمان ایجاد وارد شده در صفحه ویرایش نشون بدیم + اینکه فرم هایی که مقداردهی هم نشدن موجود باشند که اگر کاربر خواست اونارو هم مقدار دهی کنه

چیزی که من متوجه شدم رابطه manny to many با pivot راهکار این هست اما نمی دونم مقدار value که قرار برای هر محصول یه چیز باشه رو در جدول pivot باید جا بدم ؟ یا در جدول جداگانه

من ارتباط صحیح جداول و دریافت مقدار در زمان ویرایش محصول رو میخوام بدونم


رضا جوان
تخصص : مدیر IT
@rj2mcode 2 سال پیش مطرح شد
0

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

بحث رابطه بین جداول یک مبحث جدا هست . شما اول باید داده های یک محصول رو برای فرم ویرایش نشون بدید بعد به دنبال رابطه باشید.


Saman
@saman3230 2 سال پیش مطرح شد
0

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

این فرم (مشخصات) داینامیک هست و هر لحظه میتونه یه Input جدید ایجاد بشه ، قرار هم نیست داده ها بصورت json ذخیره کنیم ، چون کارباهاشون نیاز به cast داره کلی مبحث پیچده میشه ، تا جایی که من میدونم با many to many میشه این رو پیاده سازی کرد


رضا جوان
تخصص : مدیر IT
@rj2mcode 2 سال پیش مطرح شد
0

سامان جان سوال خودت رو چند بار بخون و همچنین پاسخی که بهت دادم. هیچ اشتباهی توی پاسخ نیست.
شما فرمودی میخوای داده ها رو توی فرم ویرایش نشون بدی. منم گفتم زمانی که فرم ویرایش رو فراخوانی میکنی مقادیر مورد نظر خودت رو بهش پاس بده. حالا این وسط دیتای شما ممکنه توی 3 تا 4 تا جدول به صورت رابطه ای باشه. مثلا رنگ ها داخل یک جدول. مدل ها داخل یک جدول. سایز محصول داخل یک جدول که به جدول محصول رابطه ای وصل هستش.
مثلا یک لباس 3 سایز داره و همچنین 5 تا رنگ داره. اینا باید توی جدول دیگه ای ذخیره بشه. بصورت رابطه ای.
سوال شما چند بخش داره که باید جدا جدا باز بشه و بحث بشه.
بخش اول نمایش داده های ذخیره شده دیتابیس در فرم ویرایش محصول هست. بخش دومش هم رابطه اون داده ها هستش.


Saman
@saman3230 2 سال پیش آپدیت شد
0

سلام و احترام فراوان خدمت شما

مهندس جان فکر کنم با بصورت تصویری خدمتتون بگم بهتر باشه (با این توضیح که تصاویر مربوط به پلاگین وردپرس هست و ما میخوایم این رو در لاراول پیاده سازی کنیم

1- ما محلی رو داشته باشیم که بتونیم یه دسته بندی ویژگی تعریف کنیم ، مثلا دوربین عکاسی ، این دسته بندی تعریف شده ، میتونه بینهایت زیر دسته بندی داشته باشه که هرکدوم یه جور باشه متنی ، عددی ، چک باکس (تا اینجا کار پیاده سازی شده)
 تصویر

2- در زمان ایجاد محصول مواردی که به صورت دلخواه تعریف کرده بودیم نمایش داده بشه

 تصویر

3- در صفحه ویرایش محصول ایجاد شده ، مواردی در زمان ایجاد مقدار دهی کردیم ، نمایش داده شده + مواری دیگه هم از قبل ایجاد کردیم ولی مقدار دهی نکردیم وجود داره که میشه مقدار دهی کرد یا موارد قبلی رو ویرایش کرد
 تصویر
راستش من بخش عمده اش رو پیام کرد فقط مشکلی که هست نحوه نمایش مقادیر وارد شده در زمان ایجاد محصول هست ، نمیدونم از چه طریق باید این رو در blade نشون بدم (یعنی چی ؟) یعنی اینکه ما همه اطلاعات فرم ایجاد شد رو گرفتم در یه حلقه نشون دادم ، id فرم هایی که مربوط به محصول هست و در زمان ایجاد هست در یک جدول pivot هم ذخیره کردم

 تصویر

حالا اومدن توسط ارتباط belongstomany اطلاعات مربوط به محصول خاص مثلا id = 27 هست رو از pivot گرفتم
$selected = [1,2,3,4]
مثلا این متفییر حاوی شناسه ویژگی هایی هست که در زمان ایجاد محصول با آی دی 27 انتخاب یا مقدار دهی شده

مشکل دقیقا اینجا شروع میشه ، حالا ما یه آرایه داریم که حاوی شناسه هاست $selected ، توسط inarray میایم زمان حلقه ای برای ایجاد مقادیر مشخصات هست میگیم اگر id input در متغییر selected بود ، مقدار value رو که در حدول pivot بود رو نشون بده ، ولی متاسفانه اینجا دستری به Pivot ندارم چیزی نمایش داده نمیشه

یعنی این حل بشه تمامه


Saman
@saman3230 2 سال پیش مطرح شد
0

سلام و احترام

خودم موضوع رو حل کردم ، از مدیران عزیز خواهش میکنم این تاپیک رو حذف کنند


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

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