🎉 سال نو، مهارت نو، مشاوره رایگان نقشه راه برنامه نویسی (آفر ویژه ثبت نام قبل از افزایش قیمت 🔥)
۰ ثانیه
۰ دقیقه
۰ ساعت
۳ حامد
رابطه Many to Many عادی ( غیر Polymorphic )
جامعه لاراول ایجاد شده در ۲۵ دی ۱۴۰۱

سلام

پروژه من یک وب سایت آموزشی هست، که اگر ساختارش رو بخوام بگم اینطوریه که:

یه جدول courses داریم و یه جدول users

حالا بین این دو جدول اومدم رابطه one to many برقرار کردم ( منظور دوره هایی هست که توسط یک یوزر تولید شدن و owner اش هستن )

// User model
public function courses()
{
    return $this->hasMany(Course::class, 'creator_id');
}

ولی سوالی که پیش میاد و متاسفانه توی این دوره بازم در موردش بحثی نشده، رابطه many to many نرمال بدون پالیمورفیک هست.

الان من اگه بخوام بحث سابسکریپشن رو پیاده سازی کنم، یعنی کاربرا بتونن توی دوره ثبت نام کنن، نیاز هست که یه مدل جدید به نام CourseSubscription بسازم؟

یا فقط یه مایگریشن دیگه بنام courses_subscriptions بسازم و یوزر آی‌دی و کورس آی‌دی رو توش بزارم؟

توی داکیومنت لاراول در مورد pivot table‌ها خوندم، ولی نمیدونم چطوری باید ازش استفاده کنم و چیزی هم ازش گفته نشده متاسفانه در این دوره!

سلام حامد عزیز

شما مایگریشن و مدل رو پیاده سازی کنید و کورس آیدی و یوزر آیدی رو قرار بدید و طبق مستندات خود لاراول عمل کنید.

احمدرضا فاطمی کیا ۲۵ دی ۱۴۰۱، ۱۸:۲۴

به این روش رفتم که نیازی به مدل هم نباشه:

// Migration
Schema::create('course_registrations', function (Blueprint $table) {
    $table->foreignId('user_id')->constrained();
    $table->foreignId('course_id')->constrained();
    $table->integer('purchased_price');
    $table->dateTime('registered_at');
});

مدل User:

public function CourseRegistrations(): BelongsToMany
{
    return $this->belongsToMany(Course::class,'course_registrations', 'user_id')
        ->withPivot('purchased_price', 'registered_at');
}

مدل Course:

public function UserRegistrations(): BelongsToMany
{
    return $this->belongsToMany(User::class, 'course_registrations','course_id')
        ->withPivot('purchased_price', 'registered_at');
}


بنظرتون اوکیه؟

حامد ۲۵ دی ۱۴۰۱، ۱۸:۴۱

بله اوکی هست.

احمدرضا فاطمی کیا ۲۵ دی ۱۴۰۱، ۱۸:۴۸