sistem_rekomendasi/database/seeders/SiswaSeeder.php

85 lines
3.1 KiB
PHP

<?php
namespace Database\Seeders;
use App\Models\Siswa;
use App\Models\User;
use App\Models\Jurusan;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
class SiswaSeeder extends Seeder
{
public function run(): void
{
// 1. Bersihkan data lama agar tidak terjadi error Unique NISN saat seeding ulang
// Menggunakan truncate atau delete agar ID auto-increment mulai dari awal lagi jika perlu
DB::statement('SET FOREIGN_KEY_CHECKS=0;');
Siswa::truncate();
DB::statement('SET FOREIGN_KEY_CHECKS=1;');
// 2. Ambil semua user dengan role siswa dan semua jurusan
$users = User::where('role', 'siswa')->get();
$jurusans = Jurusan::all();
// Cek jika data master (User & Jurusan) tersedia
if ($users->isEmpty() || $jurusans->isEmpty()) {
$this->command->error("Data User atau Jurusan kosong! Silahkan jalankan UserSeeder dan JurusanSeeder terlebih dahulu.");
return;
}
$siswaData = [
[
'nama_lengkap' => 'Galang Sefian Adji',
'nisn' => '12345678912', // Sesuaikan dengan yang ada di gambar UI Anda
'kelas' => 'XII-IPA-1',
'peminatan' => 'Saintek',
'minat_bakat' => 'Programming',
'ekonomi' => 'Mampu'
],
[
'nama_lengkap' => 'Eka Putri',
'nisn' => '1234567891',
'kelas' => 'XII-IPS-2',
'peminatan' => 'Soshum',
'minat_bakat' => 'Menulis',
'ekonomi' => 'Menengah'
],
[
'nama_lengkap' => 'Fajar Ramadhan',
'nisn' => '1234567892',
'kelas' => 'XII-IPA-2',
'peminatan' => 'Saintek',
'minat_bakat' => 'Robotik',
'ekonomi' => 'Mampu'
],
[
'nama_lengkap' => 'alex',
'nisn' => '1243254354',
'kelas' => 'XII-IPA-1',
'peminatan' => 'Saintek',
'minat_bakat' => 'Musik',
'ekonomi' => 'Mampu'
],
];
foreach ($siswaData as $index => $data) {
if (isset($users[$index])) {
// Menggunakan Eloquent Create agar fungsi boot() di model Siswa terpanggil
// Jangan memasukkan 'id_siswa' secara manual di sini, biarkan model yang membuatnya
Siswa::create([
'user_id' => $users[$index]->id,
'jurusan_id' => $jurusans->random()->id,
'nama_lengkap' => $data['nama_lengkap'],
'nisn' => $data['nisn'],
'kelas' => $data['kelas'],
'peminatan' => $data['peminatan'],
'minat_bakat' => $data['minat_bakat'],
'ekonomi' => $data['ekonomi'],
]);
}
}
$this->command->info("Seeder Siswa berhasil dijalankan dengan ID otomatis.");
}
}