У меня есть модель teacher
, и у teacher
есть отношение belongToMany
с моделью student
.
Я хочу использовать функцию сообщения более высокого порядка для sync
a student
ко многим teachers.
Обычно я делал бы следующее:
$teachers = Teacher::limit(5)->get();
$student = Student::first();
$teachers->each(function($teacher) use ($student) {
$teacher->students()->sync($student)
});
С функциями более высокого порядка я мог бы делать:
// Throws error BadMethodCallException: Method Illuminate\Database\Eloquent\Collection::sync does not exist.
$teachers->each->students()->sync($student);
К сожалению, из-зак тому, как работают сообщения более высокого порядка, как определено внутри класса HigherOrderCollectionProxy
, будет выполняться отношение students()
, возвращающее коллекцию всех учеников, которых имеет учитель, вместо экземпляра отношения ownToMany.
Как я могу использоватьсообщения более высокого порядка с отношениями Laravel Eloquent?