حسین
3 سال پیش توسط حسین مطرح شد
5 پاسخ

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

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


ثبت پرسش جدید
رضا جهانگیر
تخصص : Full-Stack Developer
@rezajahangir 3 سال پیش آپدیت شد
0

رابطه شما میشه چند به چند:
داخل مدل 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']);

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


رضا جهانگیر
تخصص : Full-Stack Developer
@rezajahangir 3 سال پیش مطرح شد
0

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


حسین
تخصص : توسعه دهنده وب
@hosseinhp1198 3 سال پیش مطرح شد
0

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


رضا جهانگیر
تخصص : Full-Stack Developer
@rezajahangir 3 سال پیش آپدیت شد
0

رابطه شما میشه چند به چند:
داخل مدل 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']);

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


مهران مرندی
تخصص : برنامه نویس
@mehranmarandi 3 سال پیش آپدیت شد
0

همونطور که دوستمون گفتن باید در مدل 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 3 سال پیش مطرح شد
0

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


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

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