Membuat CRUD Sederhana Menggunakan Laravel
Dalam membuat CRUD menggunakan laravel, ada beberapa aplikasi yang perlu diinstal untuk menjalankan dan memulai project menggunakan laravel, yaitu Composer,XAMPP, Visual Studio Code. Jika sudah semua aplikasi yang diperlukan terinstal, untuk memulai sebuah project laravel perlu membuat sebuah folder yang nantinya digunakan sebagai tempat penampungan semua file.
- Untuk memulai membuat project laravel, buka visual studio code dan buka folder yang sudah dibuat, yang digunakan untuk memulai project menggunakan laravel. Buka terminal dan ketikkan “composer create-project laravel/laravel . ”, tanda titik berarti akan memulai project di dalam folder yang sudah dibuat.
- Ketika semua folder dan file dari laravel sudah terinstal di dalam folder project, makan coba jalankan “php artisan serve” kode tersebut berfungsi untuk menjalankan server lokal laravel, biasanya server yang diberikan laravel seperti ini “ http://127.0.0.1:8000 ”
- Setelah berhasil menampilakn halaman utama dari laravel, lanjut akan membuat koneksi ke database menggunakan file .env yang diberikan laravel langsung. Dalam file env sesuaikan nama database, username dan password, untuk database connectionnya gunakan mysql.
- Setelah itu buka XAMPP Control-Panel dan aktifkan module Apache dan MySQL untuk masuk kedalam phpmyadmin, dan mulai membuat database sesuai dengan kebutuhan. Dan setelah membuat database di phpmyadmin, pastikan bahwa database di .env sesuai dengan database yang dibuat pada phpmyadmin.
- Kemudian untuk memulai melakukan migration dan membuat model dan controller, kembali buka terminal dan jalankan “php artisan make:model -mc –resource”, gunanya untuk membuat model,migration dan controller, –resorce berfungsi untuk membuat controller dalam format resource yang akan langsung memiliki function CRUD (index, create, store, show, edit, update, destroy)
- Dalam file migration yang sudah kita buat tadi terdapat function yang digunakan untuk membuat tabel dalam database, untuk codingan yang digunakan, seperti berikut ini
Schema::create(‘buku’, function (Blueprint $table){
$table->id();
$table->string(‘judul’, 100);
$table->timestamps();
});
Codingan diatas digunakan untuk membuat tabel baru dengan nama buku dengan objek yang digunakan untuk mendefinisikan isi tabelnya. $table->string(‘judul’, 100) digunakan untuk membuat kolom judul denga tipe VARCHAR dengan maksimal panjang karakter 100. Dan untuk timestamps digunakan untuk menambahkan dua kolom yaitu create_at dan update_at yang berfungsi untuk merekam waktu saat dibuat dan terakhir diperbaharui.
Lalu kembali ke terminal dan jalankan “php artisan migrate” yang berfungsi untuk menjalankan migration untuk membuat tabel di database.
- Setelah membuat migration dan tabel database, selanjutnya membuat isi dari controller untuk membuat CRUD, dalam controller sudah di berikan format resource seperti index, create, store, show, edit, update dan destroy. Untuk contoh codingannya seperti berikut ini:
- Untuk index yang menampilakn halaman utama
$buku = Buku::all();
Fungsinya untuk mengambil semua data dari tabel buku yang ada di database, untuk Buku adalah untuk model yang mewakili tabel buku dan all() digunakan untuk mengambil semua data.
Return view(‘buku.index’, compact(‘buku’));
Return ini digunakan untuk menampilkan file index dan compact(‘buku’) akan mengubah variabel $buku menjadi array “[‘buku’ => $buku]” dan mengirimkannya ke halaman utama.
- Untuk form yang tambah data memiliki dua function yaitu create dan store
Untuk yang create tinggal menambahkan
Return view(‘buku.create’)); yang digunakan untuk menampilkan halaman form tambah data.
Untuk yang store pada functionnya terdapat Request $request, yang digunakan untuk menerima dan menyimpan data baru ke dalam database. Untuk isi dalam functionnya
Buku::create($request->validate([
‘judul_buku’ => ‘required’,
‘pengarang’ => ‘required’,
‘tahun_terbit’ => ‘required’,
‘penerbit’ => ‘required’,
]));
return redirect()->route(‘buku.index’);
fungsi dari codingan tersebut adalah ketika mengisi form, maka $request->validate akan mengecek apakah semua inputan sudah sesuai dan tidak boleh kosong jika ada yang kosong, akan menampilkan menampilkan error karena ada form yang tidak diinputkan. Kemudian jika semua data berhasil tersimpan, akan kembali ke halaman utama dan menampilkan data yang berhasil dimasukkan.
- Untuk form untuk edit juga memiliki dua function yaitu edit dan update
Untuk yang edit berikan codingan
Return view(‘buku.edit’)); yang digunakan untuk menampilkan halaman form edit sesuai dengan id yang dipanggil.
Untuk update berisikan Request $request, buku $buku yang digunakan untuk menyimpan perubahan data saat melakukan edit
$buku->update($request->validate([
‘judul_buku’ => ‘required’,
‘pengarang’ => ‘required’,
‘tahun_terbit’ => ‘required’,
‘penerbit’ => ‘required’,
]));
return redirect()->route(‘buku.index’);
fungsi dari codingan tersebut adalah mengcek dan memastikan semua form dalam halaman edit harus diisi sebelum menyimpan data, pada codingan “$buku->update” digunakan saat mengupdate data buku di database sesuai dengan inputan baru. Selain itu juga melakukan validasi apakah semua form sudah terisi,jika belum maka akan menampilkan error, sedangkan jika berhasil akan menuju halaman utam dan menampilkan data yang sudah diupdate.
- Untuk delete atau destroy
$buku->delete();
return redirect()->route(‘buku.index’);
fungsi codingan tersebut adalah id buku yang dipanggil akan langsung terhapus, dan akan mengembalikan ke halaman utama dan menampilkan bahwa data berhasil terhapus.
- Selanjutnya memberikan beberapa codingan pada file model yang sudah dibuat sebelumnya, dalam model ada beberapa yang digunakan,yaitu
use HasFactory;
protected $table = ‘buku’;
protected $fillable = [‘judul_buku’, ‘pengarang’, ‘tahun_terbit’, ‘penerbit’];
pada “use Factory” digunakan untuk membuat data dummy dengan factory dan ini tidak wajib digunakan, biasanya digunakan untuk testing. Pada “protected $table = ‘buku’ ” digunakan untuk menentukan tabel yang digunakan pada model tersebut, ini berguna untuk memastikan model yang dibuat benar-benar menggunakan tabel yang dibuat dalam database. “Protected $fillable = [‘…’]” digunakan untuk menentukan kolom mana saja yang bisa diisi.
- Setelah selesai membuat dan mendefinisikan isi dari file model dan controller, selanjutnya mendefinisikan dalam file route. Route ini yang nantinya berfungsi untuk menjalankan file halaman kita yang ada dalam view. Untuk isi dari route, seperti berikut
Route::get(‘/’, [BukuController::class, ‘index’]);
Pada route ini digunakan untuk mengakses halaman utama yaitu file index.
Route::resource(‘buku’, BukuController::class);
Sedangkan untuk route diatas, menggunakan fitur resource yang langsung membuat 7 route utama pada controller yang kita buat.
Alasan menggunakan route yang pertama adalah ketika kita menjalankan server lokal laravel, akan langsung masuk pada halaman utama index yang kita buat.
- Setelah semua sudah di definisikan, langkah selanjutnya adalah membuat view atau tampilan halaman, untuk itu di dalam folder view buat folder untuk menampung seluruh view yang dibuat.
- View index, view ini yang berfungsi untuk menampilkan seluruh data dalam database kita dalam berbentuk tabel. Pada file ini berisikan codingan
@foreach ($buku as $buku)
<tr>
<td>{{ $loop->iteration }}</td>
<td>{{ $buku->judul_buku }}</td>
<td>{{ $buku->pengarang }}</td>
<td>{{ $buku->tahun_terbit }}</td>
<td>{{ $buku->penerbit }}</td>
<td><button type=”button” class=”btn btn-warning”><a href=”{{route(‘buku.edit’, $buku->id)}}” style=”color:white; text-decoration: none;”>Edit</a></button>
<form class=”btn btn=danger” action=”{{ route(‘buku.destroy’, $buku->id) }}” method=”POST”>
@csrf @method(‘DELETE’)
<button class=”btn btn-danger” type=”submit”>Hapus</button>
</form>
</form>
</td>
</tr>
@endforeach
Sehingga untuk setiap data buku yang ada dalam database akan ditampilkan dalam baris tabel. Untuk $loop->iteration digunakan untuk menampilkan monor urut secara otomatis.
- Pada halaman create untuk menambahkan data buku, halaman tersebut berisikan form untuk menambahkan data di dalam database, pada form berisikan action=”{{route(‘buku. store’)}}” digunakan untuk memanggil controller store untuk menambahkan data. Dalam halaman form juga diisi ”@csrf” yang berfungsi untuk keamanan sehingga form tidak bisa diserang dan “@csrf” wajib dipakai disemua form yang kiri data ke database (POST, PUT, DELETE) dan dalam form berisikan name=”nama_tabel” dan harus sesuai dengan nama tabel dalam database.
- Pada halaman edit juga sama seperti create, berisikan form namun bedanya, untuk halaman edit dalam form juga menampilkan seluruh data dari id yang dipanggil. Dalam edit juga berisikan action=”{{route(‘buku. update’, $buku->id)}}” yang digunakan untuk memanggil controller update untuk menampilkan data sesuai id dan mengedit data. Dalam halaman edit juga berisikan @csrf juga dan terdapat “@method(‘PUT’)”yang digunakan karena form untuk update atau edit. Untuk menampilkan data sesuai dengan id yang dipanggil, menggunakan value=”{{$buku->pengarang}}” untuk menampilkan data lama saat melakukan edit data.
- Untuk delete atau destroy tidak memiliki halaman khusus untuk melakukan penghapusan data, namun delete berada pada halaman utama, dan berisikan beberapa codingan untuk melakukan hapus data
action=”{{ route(‘buku.destroy’, $buku->id) }}” method=”POST”>
kode itu digunakan dalam form hapus dimana action akan menghasilkan URL untuk menghapus data berdasarka id
@csrf @method(‘DELETE’)
@csrf digunakan untuk mencegah serangan CSRF dengan token keamanan laravel dan @method(‘DELETE’) digunakan untuk melakukan delete.
Leave A Comment