
Membuat Migration, Model, Controller, dan Routes di Laravel
Panduan membuat tabel members dengan Laravel untuk pemula.
Membuat Migration, Model, Controller, dan Routes di Laravel
Artikel ini akan memandu kamu membuat struktur dasar CRUD
menggunakan Laravel. Kita akan membuat tabel members
lengkap dengan migration, model, controller, dan route-nya.
1. Membuat Migration
Jalankan perintah artisan untuk membuat migration dan model sekaligus:
php artisan make:model Member -m
Perintah di atas akan membuat file model Member.php
dan file migration di folder database/migrations
.
Edit file migration tersebut, dan sesuaikan dengan struktur berikut:
Schema::create('members', function (Blueprint $table) { $table->id(); $table->string('nama'); $table->enum('divisi', ['pemrograman', 'multimedia']); $table->text('alamat'); $table->integer('angkatan'); $table->float('ipk'); $table->boolean('status'); $table->timestamps(); });
Lalu jalankan migrasi dengan perintah:
php artisan migrate
2. Membuat Controller
Selanjutnya, buat controller untuk member:
php artisan make:controller MemberController
Edit app/Http/Controllers/MemberController.php
dan tambahkan method dasar seperti berikut:
<?php namespace App\Http\Controllers; use App\Models\Member; use Illuminate\Http\Request; class MemberController extends Controller { public function index() { $members = Member::all(); return view('members.index', compact('members')); } public function create() { return view('members.create'); } public function store(Request $request) { $request->validate([ 'nama' => 'required', 'divisi' => 'required|in:pemrograman,multimedia', 'alamat' => 'required', 'angkatan' => 'required|numeric', 'ipk' => 'required', 'status' => 'required|boolean', ], [ 'nama.required' => 'Nama wajib diisi', 'divisi.required' => 'Divisi wajib diisi', 'alamat.required' => 'Alamat wajib diisi', 'angkatan.required' => 'Angkatan wajib diisi', 'status.required' => 'Status wajib diisi', 'in' => ':attribute harus diisi dengan pemrograman atau multimedia', 'numeric' => ':attribute harus diisi dengan angka', 'boolean' => ':attribute harus diisi', ]); Member::create($request->all()); return redirect()->route('members.index'); } public function show($id) { $member = Member::findOrFail($id); return view('members.show', compact('member')); } public function edit($id) { $member = Member::findOrFail($id); return view('members.edit', compact('member')); } public function update(Request $request, $id) { $request->validate([ 'nama' => 'required', 'divisi' => 'required|in:pemrograman,multimedia', 'alamat' => 'required', 'angkatan' => 'required|numeric', 'ipk' => 'required', 'status' => 'required|boolean', ], [ 'required' => ':attribute wajib diisi', 'in' => ':attribute harus diisi dengan pemrograman atau multimedia', 'numeric' => ':attribute harus diisi dengan angka', 'boolean' => ':attribute harus diisi', ]); $member = Member::findOrFail($id); $member->update($request->all()); return redirect()->route('members.index', [ 'member' => $member ]); } public function destroy($id) { $member = Member::findOrFail($id); $member->delete(); return redirect()->route('members.index'); } }
3. Menyesuaikan Model
Edit app/Models/Member.php
agar dapat menerima input massal:
namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Member extends Model { use HasFactory; protected $fillable = [ 'nama', 'divisi', 'alamat', 'angkatan', 'ipk', 'status', ]; }
4. Menambahkan Route
Tambahkan route untuk member pada file routes/web.php
:
use App\Http\Controllers\MemberController; Route::resource('members', MemberController::class);
Download File View
Untuk mempermudah kamu, saya sudah menyediakan file Blade index
, create
, dan edit
lengkap. Silakan unduh melalui tautan berikut:
Unduh File Views (ZIP)
5. Kesimpulan
Sekarang kamu sudah memiliki setup lengkap CRUD sederhana untuk tabel members
. Langkah selanjutnya kamu bisa membuat blade file untuk tampilan seperti index.blade.php
, create.blade.php
, dll.
Semoga bermanfaat untuk proyek Laravel kamu!
Untuk dokumentasi lebih lanjut, kunjungi: https://laravel.com/docs