sistem-akademik/database/seeders/ClassStudentSeeder.php
2025-05-25 11:13:50 +07:00

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++;
}
}
}
}