@ali.bayat
@mohsenbostan
سلام به دوستان.
من میخوام سایتی مشابه دیوار ایجاد کنم و کاربر بتواند املاک زیر را ثبت کند.
آپارتمان فروشی
آپارتمان اجاره ای
ویلا فروشی
ویلا اجاره ای
مغازه فروشی
مغازه اجاره ای
مطب و دفتر فروشی
مطب و دفتر اجاره ای
همچنین هر ملک اطلاعاتش فرق میکنه، حالا سوال من اینه با توجه به اینکه اطلاعات هر ملک تفاوت داره باید 8 تا جدول ایجاد کنم یا با یه جدول هم میشه اطلاعات هر ملک رو ثبت کرد؟
به نظر من اگر جدول با این چند تا فیلد باشه فقط کافیه یه فیلدی مثلا به نام type_estate که انواع موارد را با یک کد نگهداری کنید. فیلد هایی که برای همه نیاز به تکمیل اون نیست را null کنید . حالا برای خوندن رکورد ها به فیلد type_estate نگاه می کنه اگر id ویا کد برابر اون چیزی که می خواستید مثلا آپارتمان فروشی فقط فیلد های مورد نظرتون را بهتون بده.
اگر بخواهید از جداول واسط استفاده کنید باید همون تعداد جدول باید بسازید .
سلام وقتتون بخیر.
نیاز به ساخت ۸ تا جدول نیست. روشی که توی این جور مواقع مرسومه استفاده از meta هاست.
یعنی یه جدول درست میکنید و اطلاعاتی که برای هر نوع از محصولات فرق میکنه رو میریزید اون تو با یه key و value.
مثلا اگر مغازه یک مقداری به اسم x نیاز داره که بقیه محصولها نیاز ندارن، توی اون جدول metas که دارید، میتونید آیدی هر مغازهای که میسازید رو بدید و key رو x بدید و value رو هر چیزی که دوست دارید.
وردپرس هم برای ذخیره کردن اطلاعات کاربرا از meta attribute ها استفاده میکنه.
این لینک رو نگاه کنید.
و این پکیج هم دقیقا همین کاری که شما میخواید رو انجام میده ولی دقیق نخوندم به چه روشی.
@ali.bayat
@MehdiAghighi
@mohsenbostan
من متوجه نشدم.
لطف کنید طبق این جدول بگین من چیکار کنم؟
فرض کنید اطلاعات مورد نیاز ثبت یک آپارتمان به صورت زیر است.
Schema::create('estates', function (Blueprint $table) {
$table->id();
$table->unsignedBigInteger('user_id');
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade')->onUpdate('cascade');
$table->string('title');
$table->text('description');
$table->string('city');
$table->text('images');
$table->text('address');
$table->integer('area');
$table->string('rent');
$table->string('deposit');
$table->string('price');
$table->integer('roomCount');
$table->integer('year');
$table->integer('floor');
$table->string('elevator');
$table->string('parking');
$table->string('depot');
$table->string('slug');
$table->timestamps();
});
حالا فرض کنید برای ثبت آپارتمان فروشی به همه فیلدها نیاز داریم به جز
$table->string('rent');
$table->string('deposit');
و برای ثبت آپارتمان اجاره ای به همه فیلدها نیاز داریم به جز
$table->string('price');
همچنین من مدل های خودم را به صورت زیر تعریف کردم، آیا درسته؟
مدل Estate
public function user() {
return $this->belongsTo(User::class);
}
مدل User
public function estate() {
return $this->hasMany(Estate::class);
}
ببینید شما گفتید که برای آپارتمان اجارهای نیازی به price ندارید.
خب پس کلا فیلد price رو حذف کنید.
حالا یه جدول دیگه درست کنید مثلا به اسم estates_metas
که رابطه یک به چند داره به هر estate.
خب حالا فرض کنید میخواید یک آپارتمان فروشی بزارید. شما نیاز به فیلد price دارید ولی اون رو از جدول estates حذف کردید.
کاری که باید بکنید اینه:
بعدش هم estateid ( توی تیبل estates_metas ) رو برابر آیدی اون آپارتمان فروشی که قرار دارید میزارید.
حالا داخل مودل Estate یک ریلیشن تعریف میکنید بین estates و estates_metas مثلا به اسم متود metas که تمام رکوردهایی که مربوط به اون estate مورد نظر شما میشه رو بیاره.
متاسفانه توضیح دادنش توی متن یه خورده سخته نمیتونم حرفم رو درست منتقل کنم.
توی این لینک میتونید در مورد Metadata بخونید. یه مفهموم کلی هستش که خیلی استفاده داره.
@MehdiAghighi
امکانش هست آیدی تلگرامتونو بدین تا بهتون پیام بدم و از طریق دیسکورد واسم درستش کنید؟
سلام، اگه سوالتونو درس متوجه شده باشم الان این ها دسته بندی هستند، شما برای این دسته بندی ها یه جدول درست کنید به اسم ویژگی، هر دسته بندی یه سری ویژگی برا خودش داره،که رابطش یک به چنده
چیزی شبیه به این میشه
@arminrahmati999 اکانت تلگرامم هستش روی پروفایلم.
@coaradsupp همون چیزی که من گفتم رو سادهترش رو گفت تقریبا.
به نظر من اگر جدول با این چند تا فیلد باشه فقط کافیه یه فیلدی مثلا به نام type_estate که انواع موارد را با یک کد نگهداری کنید. فیلد هایی که برای همه نیاز به تکمیل اون نیست را null کنید . حالا برای خوندن رکورد ها به فیلد type_estate نگاه می کنه اگر id ویا کد برابر اون چیزی که می خواستید مثلا آپارتمان فروشی فقط فیلد های مورد نظرتون را بهتون بده.
اگر بخواهید از جداول واسط استفاده کنید باید همون تعداد جدول باید بسازید .
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟