
- Create yaitu membuat data
- Read yaitu membaca/menampilkan data
- Update yaitu mengedit/memperbarui data
- Delete yaitu menghapus data
Di artikel kali ini, saya akan menampilkan tutorial cara membuat CRUD pada database laravel.
Langkah pertama, siapkan teks editor untuk persiapan membuat struktur database
Sebelumnya jangan lupa untuk menyalakan server apache dan mysql pada xampp serta menyalakan server laravel. Jika sudah, buka visual code studio. Disini kalian bisa menggunakan teks editor lainnya, namun saran saya lebih baik menggunakan visual code studio karena visual code studio dilengkapi dengan terminal yang akan dibutuhkan untuk database laravel nantinya. Kalian bisa kunjungi situs resminya, code.visualstudio.com jika belum menginstal.
Masuk ke shellnya dan ketikkan ‘cd htdocs\projek-laravel’ untuk masuk ke direktorinya. Projek-laravel itu adalah folder yang saya buat di artikel sebelumnya. Setelah masuk ke direktorinya, maka kalian bisa menjadikannya sebagai pengganti terminal di visual studio code. Namun disini saya hanya lebih memilih menggunakan visual studio code.
Langkah kedua, membuat struktur migrasi untuk database
Buka folder projek-laravel pada visual studio code, untuk membukanya bisa menekan tulisan file yang berada di dekat logo visual studio code. Disana terdapat opsi open folder.
Setelah membuka folder projek-laravel, maka buka terminal dengan menekan ctrl + j dan ketikkan ‘php artisan make:migration create_projek_table’. Projek adalah nama bebas. Setelah membuatnya, file tersebut akan berada di folder projek-laravel\database\migrations\2024_09_05_004539_create_projek_table.php
2024_09_05 adalah tanggalan pembuatannya sedangkan 004539 adalah waktu pembuatannya dalam format 24 jam. Mungkin namanya akan berubah, tergantung kapan kalian membuatnya. File tersebut adalah file migrasi yang akan ditambahkan kedalam database nantinya.
Masuk ke file migrasi tersebut dan ketikkan skrip dibawah ini:
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('projek', function (Blueprint $table) {
$table->id();
$table->string('nama');
$table->integer('kelas');
$table->string('jurusan');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('projek');
}
};
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Projek extends Model
{
use HasFactory;
protected $table = 'projek';
protected $fillable = [
'nama',
'kelas',
'jurusan',
];
}
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=db_projek
DB_USERNAME=root
DB_PASSWORD=
DB_COLLATION=utf8mb4_general_ci
Jika semua sudah dilakukan maka buka terminal dan ketikkan 'php artisan migrate' jika ada pertanyaan, maka tekan enter saja. Untuk melihat tabel yang telah dimigrasi maka buka phpmyadmin dengan mengetik di browser 'localhost/phpmyadmin' (jangan lupa untuk menyalakan server apache dan mysql).
- index.blade.php (untuk menampilkan data)
- create.blade.php (untuk membuat data)
- edit.blade.php (untuk mengedit data)
<?php
use App\Models\Projek;
use Illuminate\View\View;
use Illuminate\Http\Request;
use Illuminate\Http\RedirectResponse;
use Illuminate\Support\Facades\Storage;
class ProjekController extends Controller
{
public function index() : View
{
$projek = Projek::all();
return view('projek.index', compact('projek'));
}
}
Selain index, kita akan membuat skrip fungsi untuk membuat create, update, dan delete. Semua itu harus berada di dalam class ProjekController extends Controller {} seperti gambar di atas.
Setelah itu ketikkan lagi skrip dibawah fungsi index seperti berikut:
public function create(): View
{
return view('projek.create');
}
public function store(Request $request): RedirectResponse
{
$request->validate([
'nama' => 'required|string|max:255',
'kelas' => 'required|numeric',
'jurusan' => 'required|string|max:255'
]);
Projek::create([
'nama' => $request->nama,
'kelas' => $request->kelas,
'jurusan' => $request->jurusan,
]);
return redirect()->route('projek.index')->with(['success' => 'Data Berhasil Disimpan!']);
}
public function edit(string $id): View
{
$projek = Projek::findOrFail($id);
return view('projek.edit', compact('projek'));
}
public function update(Request $request, $id): RedirectResponse
{
$request->validate([
'nama' => 'required|string|max:255',
'kelas' => 'required|numeric',
'jurusan' => 'required|string|max:255'
]);
$projek = Projek::findOrFail($id);
$projek->update([
'nama' => $request->nama,
'kelas' => $request->kelas,
'jurusan' => $request->jurusan,
]);
return redirect()->route('projek.index')->with(['success' => 'Data Berhasil Diubah!']);
}
Terakhir dibawah skrip update, masukkan skrip dibawah ini:
public function destroy(string $id): RedirectResponse
{
$projek = Projek::findOrFail($id);
$projek->delete();
return redirect()->route('projek.index')->with(['success' => 'Data Berhasil Dihapus!']);
}
<?php
use App\Http\Controllers\ProjekController;
use Illuminate\Foundation\Application;
use Illuminate\Support\Facades\Route;
use Inertia\Inertia;
use Illuminate\Support\Facades\Hash;
use Illuminate\Http\Request;
Route::get('/projek', [ProjekController::class, 'index'])->name('projek.index');
Route::get('/projek/create', [ProjekController::class, 'create'])->name('projek.create');
Route::post('/projek', [ProjekController::class, 'store'])->name('projek.store');
Route::get('/projek/edit/{id}', [ProjekController::class, 'edit'])->name('projek.edit');
Route::put('/projek/{id}', [ProjekController::class, 'update'])->name('projek.update');
Route::delete('/projek/{id}', [ProjekController
::class, 'destroy'])->name('projek.destroy');
<!DOCTYPE html>
<html>
<head>
<title>Daftar Data Siswa</title>
</head>
<body>
<h1>Daftar Data Siswa</h1>
<a href="{{ route('projek.create') }}">Tambah Data Siswa</a>
<table>
<thead>
<tr>
<th>Nama</th>
<th>Kelas</th>
<th>Jurusan</th>
<th>Action</th>
</tr>
</thead>
<tbody>
@foreach ($projek as $p)
<tr>
<td>{{ $p->nama }}</td>
<td>{{ $p->kelas }}</td>
<td>{{ $p->jurusan }}</td>
<td>
<form onsubmit="return confirm('Apakah Anda Yakin ingin menghapus data ini?');"
action="{{ route('projek.destroy', $p->id) }}" method="POST">
<a href="{{ route('projek.edit', $p->id) }}">Edit</a>
@csrf
@method('DELETE')
<button type="submit">Delete</button>
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<title>Tambah Data Siswa</title>
</head>
<body>
<h1>Tambah Data Siswa</h1>
<form action="{{ route('projek.store') }}" method="POST">
@csrf
<label for="nama">Nama:</label>
<input type="text" id="nama" name="nama" required>
<label for="kelas">Kelas:</label>
<input type="text" id="kelas" name="kelas" required>
<label for="jurusan">Jurusan:</label>
<input type="text" id="jurusan" name="jurusan" required>
<button type="submit">Simpan</button>
<a href="{{ route('projek.index') }}">Kembali</a>
</form>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<title>Edit Data Siswa</title>
</head>
<body>
<h1>Edit Data Siswa</h1>
<form action="{{ route('projek.update', $projek->id) }}" method="POST">
@csrf
@method('PUT')
<label for="nama">Nama:</label>
<input type="text" id="nama" name="nama" value="{{ $projek->nama }}" required>
<label for="kelas">Kelas:</label>
<input type="text" id="kelas" name="kelas" value="{{ $projek->kelas }}" required>
<label for="jurusan">Jurusan:</label>
<input type="text" id="jurusan" name="jurusan" value="{{ $projek->jurusan }}" required>
<button type="submit" >Update</button>
<a href="{{ route('projek.index') }}">Kembali</a>
</form>
</body>
</html>
Posting Komentar