У меня есть 3 таблицы с моделями, которые все принадлежат друг другу:
A ученик может посещать множество batchyears
, и их будет много grades
, а у каждого grade
будет много students
.
Как получить отношения через Eloquent, чтобы student
находился в определенном grade
в определенном batchyear
?
class Batch extends Model
{
public $guarded = [];
public function students()
{
return $this->belongsToMany(Student::class);
}
public function grades()
{
return $this->belongsToMany(Grade::class);
}
}
, а здесь - оценка
class Grade extends Model
{
public $guarded = [];
public function students()
{
return $this->belongsToMany(Student::class);
}
public function batches(){
return $this->belongsToMany(Batch::class);
}
}
и ученики
class Student extends Model
{
public $guarded = [];
public function batches()
{
return $this->belongsToMany(Batch::class)->withPivot(['batch_id']);
}
public function grades()
{
return $this->belongsToMany(Grade::class);
}
}
столы учеников. партии. оценки. batch_student, batch_grade. и grade_student. не решить проблему. если я выберу учащегося, он покажет всех учеников, которые находятся в предыдущей партии в этом классе. нужна таблица, как student_grade_batch. так 3 внешних ключа.