push(Subject::factory()->create([ 'name' => $name, ])); } $letterGrades = ['A', 'Б', 'В',]; $numberGrades = 11; $grades = collect(); while($numberGrades > 0) { foreach ($letterGrades as $letter) { $grades->push(Grade::factory()->create([ 'name' => $numberGrades . $letter, ])); } $numberGrades--; } $teachers = Teacher::factory(15)->create(); $scores = ScoreEnum::cases(); $teachers->each(function ($teacher) { $user = User::factory()->create(); $teacher->user()->save($user); }); $teacher = Teacher::factory()->create(); $teacher->user()->save(User::factory()->create(['email' => 'teacher@mail'])); $teacher->grades()->attach($grades->pluck('id')); $student = Student::factory()->create(['grade_id' => $grades->first()->id]); $student->user()->save(User::factory()->create(['email' => 'student@mail'])); $grade = $student->grade; $lessons = collect(); $subjects->each(function ($item) use ($lessons, $teacher, $student, $grade) { $teacher->subjects()->attach($item); $grade->subjects()->attach($item); $lessons->push(Lesson::factory(5)->create([ 'description' => 'Выполнение задания №3 на 87 стр. учебника', 'grade_id' => $student->grade_id, 'subject_id' => $item->id, 'teacher_id' => $teacher->id, ])); }); $grades->each(function ($grade) use ($subjects, $teachers, $scores){ Student::factory(30)->create([ 'grade_id' => $grade->id, ])->each(function ($student) use ($scores) { $user = User::factory()->create(); $student->user()->save($user); }); }); $grade->students->each(function ($student) use ($grade, $scores) { $grade->lessons->each(function ($lesson) use ($student, $scores) { $student->lessons() ->syncWithoutDetaching([ $lesson->id => ['score' => $scores[array_rand($scores)]] ]); }); }); } }