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

1 هفته پیش توسط حسین آپدیت شد
آفلاین
user-avatar
حسین ( 30926 تجربه )
1 هفته پیش
تخصص : توسعه دهنده وب

لینک کوتاه اشتراک گذاری

0

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

بهترین پاسخ
آفلاین
user-avatar
رضا جهانگیر
1 هفته پیش

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

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

آفلاین
user-avatar
رضا جهانگیر ( 21320 تجربه )
1 هفته پیش
تخصص : برنامه نویس PHP و Laravel

لینک کوتاه اشتراک گذاری

0

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

آفلاین
user-avatar
حسین ( 30926 تجربه )
1 هفته پیش
تخصص : توسعه دهنده وب

لینک کوتاه اشتراک گذاری

0

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

آفلاین
user-avatar
رضا جهانگیر ( 21320 تجربه )
1 هفته پیش
تخصص : برنامه نویس PHP و Laravel

لینک کوتاه اشتراک گذاری

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']);

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

آفلاین
user-avatar
مهران مرندی ( 16927 تجربه )
1 هفته پیش
تخصص : برنامه نویس PHP - laravel

لینک کوتاه اشتراک گذاری

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]);
آفلاین
user-avatar
حسین ( 30926 تجربه )
1 هفته پیش
تخصص : توسعه دهنده وب

لینک کوتاه اشتراک گذاری

0

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

برای ارسال پاسخ لازم است، ابتدا وارد سایت شوید.