Laravel 12 CRUD (MySQL + JWT) #5: Membuat Model Siswa

Laravel 12 CRUD (MySQL + JWT)
#5 Membuat Model Siswa

🤖 Model = jembatan antara tabel dan kode kita
🧠 Apa itu Model? Model adalah kode yang mewakili tabel di database. Bayangkan tabel siswa seperti lemari arsip. Model adalah kunci yang bisa kita gunakan untuk menyimpan, mengambil, mengubah, dan menghapus data dengan mudah.
Dengan model, kita tidak perlu menulis perintah SQL yang rumit. Cukup panggil Siswa::all() untuk ambil semua data, atau Siswa::create(...) untuk menambah data. Yuk kita buat! 🚀

Langkah 1: Buat Model Siswa dengan Artisan

1 Buka terminal/CMD di folder proyek siswaapi. Jalankan perintah:

php artisan make:model Siswa

Perintah ini akan membuat file model baru di app/Models/Siswa.php. Laravel secara otomatis akan menghubungkan model Siswa dengan tabel siswa (karena aturan penamaan: model singular, tabel plural).

💡 Tips: Kamu juga bisa langsung membuat model sekaligus migration dengan php artisan make:model Siswa -m. Tapi karena kita sudah membuat migration sebelumnya, kita buat model saja.

Langkah 2: Lihat dan Pahami Kode Model

2 Buka file app/Models/Siswa.php dengan text editor. Isinya akan seperti ini:

<?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Siswa extends Model { use HasFactory; }

Penjelasan baris per baris:

  • namespace App\Models; → memberi tahu lokasi model ini.
  • use HasFactory; → fitur untuk membuat data palsu (opsional).
  • class Siswa extends Model → kelas Siswa mewarisi semua kemampuan dari kelas Model milik Laravel.

Dengan kode sesingkat ini, model Siswa sudah bisa berkomunikasi dengan tabel siswa. Keren, kan?

Langkah 3: Tambahkan Properti $fillable (Penting!)

3 Agar kita bisa menyimpan data dengan method create() (mass assignment), kita perlu memberi tahu kolom mana yang boleh diisi secara massal. Tambahkan properti $fillable di dalam class Siswa:

class Siswa extends Model { use HasFactory; protected $fillable = [ 'nama', 'kelas', 'alamat', ]; }

Mengapa perlu $fillable? Untuk keamanan, Laravel melindungi kita dari pengisian data yang tidak diinginkan. Dengan $fillable, kita menentukan kolom yang boleh diisi. Kolom id dan timestamps otomatis dikelola Laravel.

💡 Alternatif: Kamu juga bisa menggunakan $guarded = [] untuk mengizinkan semua kolom. Tapi lebih aman menggunakan $fillable.

Langkah 4: Uji Model dengan Tinker

4 Laravel punya alat bernama Tinker untuk mencoba kode secara interaktif. Kita akan uji apakah model sudah terhubung dengan tabel. Jalankan:

php artisan tinker

Setelah masuk, coba perintah:

App\Models\Siswa::all()

Jika berhasil, akan muncul koleksi kosong seperti:

Illuminate\Database\Eloquent\Collection {#... }

Sekarang coba tambahkan data contoh:

App\Models\Siswa::create([ 'nama' => 'Budi Santoso', 'kelas' => '6A', 'alamat' => 'Jl. Mawar No. 10' ])

Jika sukses, akan muncul objek siswa yang baru dibuat. Kemudian cek lagi:

App\Models\Siswa::all()

Sekarang akan muncul data yang baru ditambahkan. Keluar dari Tinker dengan exit atau Ctrl + D.

📌 Catatan: Jika muncul error MassAssignmentException, berarti kamu lupa menambahkan $fillable. Kembali ke Langkah 3.
🎉 Model Siswa siap digunakan! Dengan model ini, kita bisa melakukan operasi CRUD dengan mudah. Selanjutnya kita akan membuat controller dan rute API untuk mengelola data siswa.

Contoh Penggunaan Model (Nanti Kita Praktikkan)

Beberapa method ajaib dari model:

  • Siswa::all() → ambil semua data siswa.
  • Siswa::find($id) → ambil siswa berdasarkan ID.
  • Siswa::create([...]) → tambah data baru.
  • $siswa->update([...]) → ubah data.
  • $siswa->delete() → hapus data.

Semua ini akan kita gunakan saat membuat API CRUD. Praktis, bukan?

Ringkasan Langkah

  • ✅ Buat model: php artisan make:model Siswa
  • ✅ Model tersimpan di app/Models/Siswa.php
  • ✅ Tambahkan properti $fillable untuk kolom nama, kelas, alamat.
  • ✅ Uji dengan Tinker: php artisan tinker lalu App\Models\Siswa::all()
  • ✅ Coba tambah data contoh dengan create()

📌 Ingat: Model adalah jembatan antara database dan aplikasi. Selalu gunakan model untuk berinteraksi dengan data.

(Link akan aktif saat artikel sebelumnya dan selanjutnya terbit)

📘 Laravel 12 CRUD (MySQL + JWT) • #5 Membuat Model Siswa • 🧩 Model siap!
Lebih baru Lebih lama

نموذج الاتصال