Tutorial Membuat CRUD dengan Laravel

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! 

Posting Komentar

0 Komentar