У меня есть модель Classroom
с отношением belongsToMany
. Я хочу, чтобы порядок его дочерних элементов охотно определялся с помощью массива идентификаторов, уже имеющихся в модели, например, student_ids
имеет [5,1,7,9,2]
.
Другими словами, всякий раз, когда я получаю Classroom
, он всегда должен выбирать Students
в этом порядке.
public function students()
{
return $this->belongsToMany(Student::class)->withTimestamps();
}
Я пробовал sortBy('student_ids')
и orderBy('student_ids')
, которые не работают - но мне удалось удалось отсортировать их, используя что-то подобное в моем Classroom
контроллере :
public function sortedStudents($ids)
{
return $this->students()->sortBy(function ($student) use ($ids) {
return array_search($student->id, $ids);
});
}
Это работает, но мне нужно передать в ids
по факту. Я хотел бы обработать его «по умолчанию» в самих отношениях.
Спасибо. ?