У меня есть работающий / работающий код, и я изо всех сил пытаюсь его оптимизировать.
Код ниже:
@foreach($semesters as $semester)
@foreach($student->subjects->where('semester_id', $semester->id) as $subject)
{{ $subject->name }}
//some code here
@endforeach
@endforeach
Итак, я хочу Передайте это выражение $student->subjects->where('semester_id', $semester->id
в контроллер, однако запрос зависит от 'semester' l oop. Как вы оптимизируете или реорганизуете код?
Примечание. Мне нужно получить модель субъекта у студента , поскольку они связаны с опорным центром, и мне нужны эти отношения для этого случая.
Заранее спасибо.
Редактировать
Красноречивые связи:
Тема:
public function teacher()
{
return $this->belongsTo(Teacher::class);
}
public function semester()
{
return $this->belongsTo(Semester::class);
}
public function students()
{
return $this->belongsToMany(Student::class)
->withPivot('accepted')
->withTimestamps();
}
Модель студента:
public function subjects()
{
return $this->belongsToMany(Subject::class)
->wherePivot('accepted', '=',1)
->withPivot('accepted')
->withTimestamps();
}
Модель семестра:
public function subjects()
{
return $this->hasMany(Subject::class);
}
Модель учителя:
public function subjects()
{
return $this->hasMany(Subject::class);
}
Контроллер
public function index(Student $student)) {
$student->subjects->load('teacher');
$semesters = Semester::whereIn('id', $student->subjects->pluck('semester_id'))->get();
return view(....);
}