Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

kevariable's avatar

Can't retrieved many-to-many polymorphic pivot table

Hey guys, i have a few table following model

  • TeacherClass
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class TeacherClass extends Model
{
    use HasFactory;

    protected $fillable = [
        'name', 'year'
    ];

    /* Model Start */

    public function students()
    {
        return $this->morphedByMany(Student::class, 'teacher_classable');
    }

    public function teachers()
    {
        return $this->morphedByMany(Teacher::class, 'teacher_classable');
    }

    public function teacherAcademicSubjects()
    {
        return $this->morphedByMany(TeacherAcademicSubject::class, 'teacher_classable')
            ->using(TeacherClassable::class)
            ->withPivot('teacher_id');
    }

    /* Model End */

    /* Model Logic */

    /* Model Logic End */
}
  • TeacherClassable
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Relations\MorphPivot;

class TeacherClassable extends MorphPivot
{

}
  • Teacher
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Teacher extends Model
{
    use HasFactory;

    public function teacherClasses()
    {
        return $this->morphToMany(TeacherClass::class, 'teacher_classable');
    }
}

i want to retrieve teacher_id from Pivot table TeacherClassable but i just get the teacher_class_id, teacher_classable_id, teacher_classable_type

my controller

public function edit(Teacher $teacher)
{
    return EditsClassResource::collection(
        $teacher
            ->teacherClasses
            ->load([
                'teacherAcademicSubjects' =>
                function ($query) use ($teacher) {
                    // want to compare pivot teacher_id === $teacher->id 
                }
            ])
    );
}
    	
0 likes
0 replies

Please or to participate in this conversation.