راکت
حل شده

جدول واسط در لاراول

5 پاسخ

سلام دوستان
توی یک پروژه من نیاز دارم که برای هر محصول چند دسته بندی ذخیره کنم
الان من اومدم یک جدول برای محصولات دارم و یک جدول برای دسته بندی ها و یک جدول واسط هم ایجاد کردم با فیلد های product_id و category_id الان اینارو چطوری میتونم به هم متصل کنم تا دسته بندی ها یک محصول رو دریافت کنم ؟؟

حسین
حسین
@hosseinhp1198
ثبت پرسش جدید

پاسخ‌ها

5
رضا جهانگیر
رضا جهانگیر
@rezajahangir

تخصص: Full-Stack Developer

بهترین پاسخ

رابطه شما میشه چند به چند:
داخل مدل Product متد زیر رو اضافه کنید.

public function categories() {
    return $this->belongsToMany(Category::class);
}

داخل مدل Category هم متد زیر رو اضافه کنید.

public function products() {
    return $this->belongsToMany(Product::class);
}

واسه ذخیره سازی هم باید از sync استفاده کنید، به این صورت که در متد store، پس از انجام مراحلی که دارید (منظور ذخیره عکس محصول، اعتبارسنجی و ...) در انتها باید کد زیر رو قرار بدید.

$product->categories()->sync($data['categories']);

امیدوارم مفید بوده باشه.
موفق باشید.

رضا جهانگیر
رضا جهانگیر
@rezajahangir

تخصص: Full-Stack Developer

سلام.
الان شما منظورتون ذخیره سازی اطلاعات داخل جدول واسط هست یا اینکه کلا از اول میخواین واستون فرایند رو توضیح بدم؟

حسین
حسین
@hosseinhp1198

تخصص: توسعه دهنده وب

@rezajahangir
سلام ممنون میشم اگر توضیح بفرمایید
البته توی درج اطلاعات روی دیتابیس مشکل نیست فقط توی ساختارش به مشکل خوردم , و نمی تونم دسته بندی ها رو به محصولات توسط جدول واسط ارتباط بدم

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

مهران مرندی
مهران مرندی
@mehranmarandi

تخصص: برنامه نویس

همونطور که دوستمون گفتن باید در مدل product و categoriy روابط رو تعریف کنید
برای اتصال این دو به هم دیگه همچنین میتونید از متد های زیر هم استفاده کنید

$products->categories()->attach($category_id );
$products->categories()->detach($category_id );

و اگر میخوایید مشخص کنید که در جدول واسطه فقط دسته بندی هایی با id 1 2 3 باقی بمونن

$products->categories()->sync([1, 2, 3]);

و اگر میخوایید id های 1 2 3 اضافه بشن و اگر id دیگه ای هم هست حذف نشه کد زیر

$products->categories()->syncWithoutDetaching([1, 2, 3]);
حسین
حسین
@hosseinhp1198

تخصص: توسعه دهنده وب

@mehranmarandi90
از شما هم ممنونم برای توضیحاتی که ارائه دادید

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

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