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

relations in laravel

سلام دوستان وقتتون بخر . من یک جدول دسته بندی ها دارم . و یک جدول محصولات . محصولات رابطه یک به چند دارن با محصولات یعنی هر محصول میتونه جزو یک یا چندین دسته بندی باشه . حالا وقتی کاربر وارد صفحه نمایش یک کالا میشه من اطلاعات کالا رو نشون میدم ومیخوام پایین اون صفحه محصولات مرتبط رو نشون بدم. سناریو من برای نشون دادن محصولات مرتبط اینه که : هر دسته بندی یک رابطه چند به چند با خودش داره . این جدول رابط برای همون نشنون دادن محصولات مرتبط است . به فرض مثال من یک محصول دارم که توی دسته بندی 1 و 8 است . حالا توی جدول چند به چند دسته بندی ها با خودشون این روابط رو دارم که 1 به 9 ارتباط داده شده و 8 هم به 5 . حالا این یعنی اگه دسته محصول 1 بود برو محصولاتی که توی دسته بندی 9 هستن رو نشون بده. اگه دسته بندی 8 بود برو از محصولاتی که توی دسته بندی 5 هستن رو بیار . من میتونم ببینم که یک محصول جزو کدوم دسته ها است. حالا از شما دوستان عزیز راهنمایی میخوام تا بتونم از طریق دسته بندی های یک محصول برم توی اون جدول رابط بگردم و از طریق اونا توی محصولات جستجو کنم و 10 محصول رو نشون بدم.

$categories = $product->categories
foreach($categories as $category)
{
$category->children
}

حالا لطفا کمک کنید 🙏


ثبت پرسش جدید
علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 4 سال پیش مطرح شد
0

هر محصول میتونه جزو یک یا چندین دسته بندی باشه

این یک رابطه چند به چند هست .. نه یک به چند..
پس قبل از هر چیز یه pivot table هم لازم داری

متوجه ما باقی سوال نشدم، اگر کدی نوشتی و خروجی یا اروری داری، به اشتراک بگذار


امیرحسین عنبری
تخصص : Web application developer
@amiranbari33 4 سال پیش مطرح شد
0

@ali.bayat
درسته من اون جدول pivot رو دارم .
حالا فکرکنید من فقط محصول رو دارم میشه بقیش رو به صورت کد بگید چون متوجه میشم . اسم ریلشن هاشم هم هرچی گزاشتید فرقی نداره . اگه لطف کنید ممنون میشم🙏.
من محصول رو دارم میتونم اینجوری دسته بندی هاش رو بگیرم

$product->categories

حالا چجوری این دسته رو توی اون جدول pivot سرچ کنم ؟


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 4 سال پیش مطرح شد
1

جدول Pivot شما حاوی id محصول و دسته بندی هست
با یه رلیشن Many to Many نیازی نیست شما دسته رو سرچ کنید.. کافیه به رابطه many to many اشاره کنید
..

Class Category extends Model {
    public function products() {
        return $this->belongsToMany(Product::class, 'pivot_table');
    }
}

و


Class Product extends Model {
    public function categories() {
        return $this->belongsToMany(Category::class, 'pivot_table');
    }
}

حالا اگر یه دسته بندی رو داشته باشی، از این رلیشن استفاده میکنی و محصولاتش رو میگیری و بعد میتونی ۱۰ تای آخر رو بگیری

$category = \App\Category::first();
$lastProducts = $category->products()->take(10)->get();

به عکسش هم دسترسی داری


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

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