Phone no: (021) 7989671 or email us: info@zahra-itsolution.com
Posted on 14 August 2024
Membuat aplikasi CRUD (Create, Read, Update, Delete) lengkap di Laravel melibatkan beberapa langkah penting. CRUD adalah dasar dari banyak aplikasi web, dan Laravel menyediakan berbagai alat dan fitur untuk membuat proses ini sederhana dan efisien. Berikut adalah tutorial lengkap tentang cara membuat aplikasi CRUD di Laravel.
1. Menyiapkan Proyek Laravel
Jika Anda belum memiliki proyek Laravel, buatlah proyek baru dengan Composer.
Untuk tutorial membuat Proyek Composer anda dapat melihat tutorialnya disini.
2. Mengkonfigurasi Database
Konfigurasi database adalah salah satu aspek penting dalam pengembangan aplikasi web atau perangkat lunak. Dalam konteks Laravel atau sistem berbasis PHP lainnya, konfigurasi database melibatkan pengaturan koneksi antara aplikasi dan sistem manajemen basis data (DBMS) seperti MySQL, PostgreSQL, SQLite, atau SQL Server.
Untuk informasi lebih lengkapnya anda bisa akses link diatas karna sudah lengkap dengan Konfigurasinya.
3. Membuat Migration
Migration dalam pengembangan perangkat lunak, khususnya dalam konteks Laravel dan framework serupa, adalah fitur penting yang memungkinkan pengelolaan dan pelacakan perubahan struktur database secara efisien.
Bagaimana cara dan tutorial Migration? bisa anda akses disini.
jika sudah mengikuti persyaratannya anda bisa mengikuti tutorial berikt:
Model di Laravel mewakili tabel di database. Buat model NamaModel anda juga bisa menyesuaikan NamaModel dengan NamaProyekAnda sebagai Contoh saya menggunakan NamaModel dengan Matakuliah :
php artisan make:model Matakuliah
Model ini akan berada di app/Models/Matakuliah.php
. Secara default, Laravel akan mengasosiasikan model ini dengan tabel Matakuliah di database.
Edit isi Model app/Models/Matakuliah.php sesuaikan dengan yang anda butuhkan:
Contoh Model:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class MataKuliah extends Model
{
use HasFactory, SoftDeletes;
protected $table = 'md_matakuliah';
protected $fillable = [
'CodeMataKuliah', 'NamaMataKuliah',
];
protected $dates = ['deleted_at'];
public function mahasiswaMatakuliah()
{
return $this->hasMany(MahasiswaMatakuliah::class, 'matakuliah_id');
}
}
Controller menangani logika aplikasi. Buat controller untuk Matakuliah dengan resource methods:
php artisan make:controller MatakuliahController
Controller ini akan berada di app/Http/Controllers/MatakuliahController.php
. Laravel membuat metode CRUD dasar seperti index
, create
, store
, show
, edit
, update
, dan destroy
di dalam controller.
Edit isi app/Http/Controllers/MatakuliahController.php
sesuaikan dengan proyek yang anda akan buat:
Contoh Controller:
use App\Models\Matakuliah; use Illuminate\Http\Request; class MataKuliahController extends Controller { public function index() { $matakuliah = Matakuliah::paginate(10); // Mengambil data dengan pagination, 10 item per halaman return view('matakuliah.index', compact('matakuliah')); } public function create() { // Ambil kode mata kuliah terakhir dari database $lastCode = Matakuliah::latest('created_at')->first()->CodeMataKuliah ?? 'MTK0000'; // Ambil nomor terakhir dari kode $lastNumber = intval(substr($lastCode, 3)) ?? 0; // Generate kode baru $newNumber = $lastNumber + 1; $newCode = 'MTK' . str_pad($newNumber, 4, '0', STR_PAD_LEFT); // Pastikan kode baru belum ada di database while (Matakuliah::where('CodeMataKuliah', $newCode)->exists()) { $newNumber++; $newCode = 'MTK' . str_pad($newNumber, 4, '0', STR_PAD_LEFT); } // Pass kode baru ke view return view('matakuliah.create', ['newCode' => $newCode]); } public function store(Request $request) { // Validasi input $request->validate([ 'CodeMataKuliah' => 'required|unique:md_matakuliah,CodeMataKuliah', 'NamaMataKuliah' => 'required|unique:md_matakuliah,NamaMataKuliah', ]); // Simpan data jika valid $matakuliah = new Matakuliah(); $matakuliah->CodeMataKuliah = $request->CodeMataKuliah; $matakuliah->NamaMataKuliah = $request->NamaMataKuliah; $matakuliah->save(); return redirect()->route('matakuliah.index')->with('success', 'Mata kuliah berhasil ditambahkan.'); }
public function edit($id) { $matakuliah = Matakuliah::findOrFail($id); return view('matakuliah.edit', compact('matakuliah')); } public function update(Request $request, $id) { $request->validate([ 'CodeMataKuliah' => 'required|unique:md_matakuliah,CodeMataKuliah,' . $id, 'NamaMataKuliah' => 'required', ]); $matakuliah = Matakuliah::findOrFail($id); $matakuliah->update($request->all()); return redirect()->route('matakuliah.index') ->with('success', 'Mata Kuliah updated successfully.'); } public function destroy($id) { $matakuliah = Matakuliah::findOrFail($id); $matakuliah->delete(); return redirect()->route('matakuliah.index') ->with('success', 'Mata Kuliah deleted successfully.'); } // Menampilkan data yang dihapus public function trash() { $matakuliah = Matakuliah::onlyTrashed()->get(); return view('matakuliah.trash', compact('matakuliah')); } public function restore($id) { $matakuliah = Matakuliah::onlyTrashed()->findOrFail($id); $matakuliah->restore(); return redirect()->route('matakuliah.trash') ->with('success', 'Mata Kuliah restored successfully.'); } public function forceDelete($id) { $matakuliah = Matakuliah::onlyTrashed()->findOrFail($id); $matakuliah->forceDelete(); return redirect()->route('matakuliah.trash') ->with('success', 'Mata Kuliah permanently deleted.'); } }
Tambahkan rute untuk resource controller di file routes/web.php
:
use App\Http\Controllers\MataKuliahController;
// Rute Mata Kuliah
Route::resource('matakuliah', MataKuliahController::class)->except(['show']);
Route::get('/matakuliah/trash', [MataKuliahController::class, 'trash'])->name('matakuliah.trash');
Route::post('/matakuliah/{id}/restore', [MataKuliahController::class, 'restore'])->name('matakuliah.restore');
Route::delete('/matakuliah/{id}/force-delete', [MataKuliahController::class, 'forceDelete'])->name('matakuliah.forceDelete');
Rute ini akan membuat semua rute yang diperlukan untuk operasi CRUD berdasarkan nama metode di MatakuliahController
.