52 lines
1.5 KiB
PHP
52 lines
1.5 KiB
PHP
<?php
|
|
|
|
namespace Database\Seeders;
|
|
|
|
use App\Models\AcademicYear;
|
|
use App\Models\ClassRoom;
|
|
use App\Models\ClassStudent;
|
|
use App\Models\Student;
|
|
use Illuminate\Database\Seeder;
|
|
|
|
class ClassStudentSeeder extends Seeder
|
|
{
|
|
public function run(): void
|
|
{
|
|
$academicYears = AcademicYear::all();
|
|
$classRooms = ClassRoom::all();
|
|
$students = Student::all();
|
|
|
|
// Pastikan ada data yang tersedia
|
|
if ($academicYears->isEmpty() || $classRooms->isEmpty() || $students->isEmpty()) {
|
|
return;
|
|
}
|
|
|
|
// Distribusikan siswa ke kelas secara merata
|
|
$studentsPerClass = ceil($students->count() / $classRooms->count());
|
|
$studentChunks = $students->chunk($studentsPerClass);
|
|
|
|
foreach ($academicYears as $academicYear) {
|
|
$classIndex = 0;
|
|
|
|
foreach ($studentChunks as $studentGroup) {
|
|
// Pastikan kita tidak melebihi jumlah kelas yang tersedia
|
|
if ($classIndex >= $classRooms->count()) {
|
|
break;
|
|
}
|
|
|
|
$classRoom = $classRooms[$classIndex];
|
|
|
|
foreach ($studentGroup as $student) {
|
|
ClassStudent::firstOrCreate([
|
|
'class_room_id' => $classRoom->id,
|
|
'student_id' => $student->id,
|
|
'academic_year_id' => $academicYear->id,
|
|
]);
|
|
}
|
|
|
|
$classIndex++;
|
|
}
|
|
}
|
|
}
|
|
}
|