Pendahuluan
Pada tutorial ini, kami akan membahas cara membuat aplikasi CRUD (Create, Read, Update, Delete) dengan menggunakan framework PHP Laravel. Dalam tutorial ini, kita akan membuat sebuah aplikasi sederhana yang memungkinkan pengguna untuk menambahkan, melihat, memperbarui, dan menghapus entri dalam sebuah database.
Persiapan
Sebelum memulai tutorial, pastikan bahwa Anda memiliki lingkungan pengembangan Laravel yang berfungsi dengan baik. Anda dapat mengunduh dan menginstal Laravel menggunakan Composer. Anda juga perlu menginstal database MySQL atau PostgreSQL.
Membuat Model
Pertama, kita akan membuat model untuk entitas utama kita. Mari kita sebut model ini "Item". Untuk membuat model ini, jalankan perintah berikut di terminal Anda:
php artisan make:model Item
Setelah itu, buka file Item.php di direktori app/Models dan tambahkan kode berikut:
namespace App\\Models;
use Illuminate\\Database\\Eloquent\\Factories\\HasFactory;
use Illuminate\\Database\\Eloquent\\Model;
class Item extends Model
{
use HasFactory;
protected $fillable = [ 'name', 'description', 'price', ];
}
Kode ini memberi tahu Laravel bahwa model Item berhubungan dengan sebuah tabel bernama "items" dalam database kita. Tabel ini memiliki tiga kolom: "name", "description", dan "price".
Membuat Migration
Sekarang, kita akan membuat migration untuk tabel "items". Migration adalah cara Laravel untuk mengelola skema database kita. Untuk membuat migration ini, jalankan perintah berikut di terminal Anda:
php artisan make:migration create_items_table --create=items
Setelah itu, buka file migration yang baru saja dibuat (di direktori database/migrations) dan ubah kode di dalamnya agar terlihat seperti ini:
use Illuminate\\Database\\Migrations\\Migration;
use Illuminate\\Database\\Schema\\Blueprint;
use Illuminate\\Support\\Facades\\Schema;
class CreateItemsTable extends Migration
{
public function up() {
Schema::create('items', function (Blueprint $table) {
$table->id(); $table->string('name');
$table->text('description');
$table->decimal('price', 8, 2);
$table->timestamps(); }); }
public function down() {
Schema::dropIfExists('items');
}
}
Kode di atas akan membuat tabel "items" dengan empat kolom: "id" (sebuah integer auto-incrementing yang menjadi primary key), "name" (sebuah string), "description" (sebuah teks), "price" (sebuah decimal dengan delapan digit di depan koma dan dua digit di belakang koma), dan "timestamps" (dua kolom datetime yang menunjukkan kapan suatu entri dibuat dan diubah).
Setelah Anda menyimpan perubahan tersebut, jalankan perintah berikut di terminal Anda untuk menjalankan migration:
php artisan migrate
Membuat Controller
Selanjutnya, kita akan membuat controller untuk mengelola entitas "items" kita. Untuk melakukan ini, jalankan perintah berikut di terminal Anda:
php artisan make:controller ItemController --resource
Setelah itu, buka file ItemController.php yang baru saja dibuat (di direktori app/Http/Controllers) dan ubah kode di dalamnya agar terlihat seperti ini:
namespace App\\Http\\Controllers;
use Illuminate\\Http\\Request;
use App\\Models\\Item;
class ItemController extends Controller {
public function index() {
$items = Item::all();
return view('items.index', compact('items'));
}
public function create() {
return view('items.create');
}
public function store(Request $request) {
$item = Item::create([
'name' => $request->input('name'),
'description' => $request->input('description'),
'price' => $request->input('price'), ]);
return redirect()->route('items.index');
}
public function show($id) {
$item = Item::findOrFail($id);
return view('items.show', compact('item'));
}
public function edit($id) {
$item = Item::findOrFail($id);
return view('items.edit', compact('item'));
}
public function update(Request $request, $id) {
$item = Item::findOrFail($id);
$item->update([
'name' => $request->input('name'),
'description' => $request->input('description'),
'price' => $request->input('price'), ]);
return redirect()->route('items.index');
}
public function destroy($id) {
$item = Item::findOrFail($id); $item->delete();
return redirect()->route('items.index');
}
}
Kode di atas membuat sebuah controller yang memiliki tujuh method untuk mengelola entitas "items" kita: index, create, store, show, edit, update, dan destroy. Method index akan menampilkan daftar semua item, method create akan menampilkan form untuk membuat item baru, method store akan menyimpan item baru yang dibuat, method show akan menampilkan detail suatu item, method edit akan menampilkan form untuk mengedit suatu item, method update akan menyimpan perubahan yang dibuat pada suatu item, dan method destroy akan menghapus suatu item.
Membuat Routes
Sekarang, kita akan membuat routes untuk menghubungkan URL kita dengan controller yang baru saja dibuat. Untuk melakukan ini, buka file web.php di direktori routes dan tambahkan kode berikut:
use App\\Http\\Controllers\\ItemController;
Route::get('/', [ItemController::class, 'index'])->name('items.index');
Route::get('/create', [ItemController::class, 'create'])->name('items.create');
Route::post('/', [ItemController::class, 'store'])->name('items.store');
Route::get('/{id}', [ItemController::class, 'show'])->name('items.show'); Route::get('/{id}/edit', [ItemController::class, 'edit'])->name('items.edit');
Route::put('/{id}', [ItemController::class, 'update'])->name('items.update'); Route::delete('/{id}', [ItemController::class, 'destroy'])->name('items.destroy');
Kode di atas memberi tahu Laravel untuk menghubungkan URL kita dengan method yang sesuai di dalam controller ItemController. Secara khusus, URL "/" akan menampilkan daftar semua item, URL "/create" akan menampilkan form untuk membuat item baru, URL "/{id}" akan menampilkan detail suatu item, URL "/{id}/edit" akan menampilkan form untuk mengedit suatu item, dan URL "/{id}" (dengan method HTTP PUT) dan URL "/{id}" (dengan method HTTP DELETE) akan menyimpan perubahan dan menghapus suatu item, masing-masing.
Membuat Views
Terakhir, kita akan membuat view untuk menampilkan entitas "items" kita. Untuk melakukan ini, buat tiga file blade baru di direktori resources/views: index.blade.php, create.blade.php, dan edit.blade.php. Isi masing-masing file tersebut dengan kode berikut:
Index.blade.php
@extends('layouts.app')
@section('content')
<h1>Daftar Item</h1>
<a href="{{ route('items.create') }}" class="btn btn-primary">Tambah Item Baru</a>
<table class="table">
<thead>
<tr>
<th>Nama</th>
<th> Deskripsi</th>
<th>Harga</th>
<th>Aksi</th> </tr>
</thead>
<tbody>
@foreach ($items as $item)
<tr>
<td>{{ $item->name }}</td>
<td>{{ $item->description }}</td>
<td>{{ $item->price }}</td>
<td> <a href="{{ route('items.show', $item->id) }}" class="btn btn-primary">Lihat</a> <a href="{{ route('items.edit', $item->id) }}" class="btn btn-secondary">Edit</a>
<form action="{{ route('items.destroy', $item->id) }}" method="POST" style="display: inline-block;">
@csrf @method('DELETE')
<button type="submit" class="btn btn-danger">Hapus</button> </form> </td> </tr> @endforeach </tbody>
</table>
@endsection
Create.blade.php
@extends('layouts.app')
@section('content')
<h1>Tambah Item Baru</h1>
<form action="{{ route('items.store') }}" method="POST">
@csrf <div class="form-group">
<label for="name">Nama:</label>
<input type="text" class="form-control" id="name" name="name"> </div>
<div class="form-group">
<label for="description">Deskripsi:</label>
<textarea class="form-control" id="description" name="description"></textarea> </div>
<div class="form-group">
<label for="price">Harga:</label>
<input type="text" class="form-control" id="price" name="price">
</div>
<button type="submit" class="btn btn-primary">Simpan</button>
</form>
@endsection
Edit.blade.php
@extends('layouts.app')
@section('content')
<h1>Edit Item</h1>
<form action="{{ route('items.update', $item->id) }}" method="POST">
@csrf @method('PUT')
<div class="form-group">
<label for="name">Nama:</label>
<input type="text" class="form-control" id="name" name="name" value="{{ $item->name }}">
</div>
<div class="form-group">
<label for="description">Deskripsi:</label>
<textarea class="form-control" id="description" name="description">{{ $item->description }}</textarea>
</div>
<div class="form-group">
<label for="price">Harga:</label>
<input type="text" class="form-control" id="price" name="price" value="{{ $item->price }}">
</div>
<button type="submit" class="btn btn-primary">Simpan</button>
</form>
@endsection
Setelah itu, buat dua file blade lagi di direktori resources/views: show.blade.php dan layouts/app.blade.php. Isi masing-masing file tersebut dengan kode berikut:
Show.blade.php
@extends('layouts.app')
@section('content')
<h1>{{ $item->name }}</h1>
<p>{{ $item->description }}</p>
<p>Harga: {{ $item->price }}</p>
<a href="{{ route('items.edit', $item->id) }}" class="btn btn-primary">Edit</a>
<form action="{{ route('items.destroy', $item->id) }}" method="POST" style="display: inline-block;">
@csrf @method('DELETE')
<button type="submit" class="btn btn-danger">Hapus</button>
</form>
@endsection
Layouts/app.blade.php
@extends('layouts.app')
@section('content') <h1>{{ $item->name }}</h1>
<p>{{ $item->description }}</p>
<p>Harga: {{ $item->price }}</p>
<a href="{{ route('items.edit', $item->id) }}" class="btn btn-primary">Edit</a>
<form action="{{ route('items.destroy', $item->id) }}" method="POST" style="display: inline-block;">
@csrf @method('DELETE')
<button type="submit" class="btn btn-danger">Hapus</button>
</form>
@endsection
Selesai
Itulah tutorial singkat tentang cara membuat aplikasi CRUD dengan Laravel. Sekarang, Anda telah mempelajari cara membuat model, migration, controller, routes, dan views yang diperlukan untuk mengelola entitas "items" kita. Tentu saja, ini hanya permulaan, dan Anda dapat melakukan banyak hal lain dengan Laravel. Namun, ini memberi Anda dasar yang kuat untuk memulai. Selamat mencoba!
0 Komentar
Berikan komentar dengan login akun google anda terlebih dahulu!
- Berkomentar yang bijak
- Sesuai tema yah
- Jangan Spam
*Happy Blogging