85 lines
3.1 KiB
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.");
|
|
}
|
|
} |