php - laravel relationship return null

I have a store that is using a payment package Now I want to show the items that were purchased, but I run into this problem

enter image description here

Controller

public function mycourse()
{
    $courses = PurchasedCourse::where('user_id', Auth::id())
        ->with('course')
        ->get();
    dd($courses);
 
    return view('student.courses.mycourse', [
        'courses' => $courses
    ]);
}

Model

public function course()
{
    return $this->belongsTo(Course::class, 'id');
}

Migration

public function up()
{
    Schema::create('courses', function (Blueprint $table) {
        $table->id('id');
        $table->string('name')->unique();
        $table->string('start');
        $table->string('end');
        $table->integer('price');
        $table->string('jalasat');
        $table->string('zarfiat');
        $table->text('tozih');
        $table->integer('hit');
        $table->string('departmant');
        $table->string('thumbnail');
        $table->tinyInteger('status')->default(0);
        $table->string('slug')->unique();
        $table->timestamps();
    });
}

Answer

Solution:

Your relationship method is wrong. The syntax for the belongsTo() method is

belongsTo(class, ?foreign_id, ?related_id). In your case, it should be:

public function course()
{
    return $this->belongsTo(Course::class, 'course_id', 'id');
}

or just

public function course()
{
    return $this->belongsTo(Course::class);
}

since your columns follow Laravel's naming conventions.

Source