Setelah beberapa waktu yang lalu kita berhasil menjalankan Laravel + Xampp di Windows. Kali ini kita akan belajar memahami dasar pemrograman, yaitu CRUD alias Create, Read, Update, Delete. Yaitu modul yang digunakan oleh sebuah aplikasi. Oleh karena itu memahaminya bisa dibilang menjadi suatu keharusan.
Kita akan belajar membuat modul crud sederhana dengan framework Laravel 5 (pada saat tulisan ini dibuat, yang digunakan versi 5.6). Yaitu bagaimana membuat modul untuk menginput informasi, menyimpan, mengedit, dan juga menghapusnya. Untuk keperluan ini, Laravel yang merupakan framework PHP MVC populer memiliki fitur bawaan yang mempermudah kita dalam membuat modul CRUD.
Tahapan yang akan dilakukan yaitu:
- Install Laravel
- Konfigurasi database
- Membuat file model, controller, dan migration
- Konfigurasi file migration dan model
- Menambahkan Route
- Konfigurasi function Controller & Blade file
- Menjalankan aplikasi
Install Laravel
composer create-project --prefer-dist laravel/laravel belajar-laravel
Ingat, sebelum menjalankan perintah ini pastikan sudah menginstall composer.
Konfigurasi Database
Buatkan dulu database MySQL, dan masukkan informasi databasenya ke dalam file .env . Kalau belum ada, copy file .env.example dan beri nama file .env . Cari dan isikan bagian:
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=nama_database DB_USERNAME=username_mysql DB_PASSWORD=password
Jangan lupa untuk merubah bagian DB_DATABASE, DB_USERNAME, DB_PASSWORD sesuai konfigurasi masing-masing.
Membuat file Model, Controller, dan Migration
Kita akan membuat file model, controller, dan file migration dengan menjalankan perintah berikut:
Model & Migration
php artisan make:model Post -m
Dengan tambahan -m Laravel juga akan membuat file migration selain membuat model.
Respon dibawah ini tanda kalau file model dan migration berhasil dibuat
Model created successfully. Created Migration: 2018_04_21_043514_create_posts_table
Controller
php artisan make:controller PostController --resource --model=Post
Umumnya, file controller terdiri dari beberapa fungsi untuk menampilkan, menyimpan, update, dan hapus data. Agar Laravel otomatis membuat bagian-bagian tersebut, kita tambahkan –resource di perintahnya. Sedangkan –model=Post adalah perintah untuk menghubungkan PostController dengan Model Post.
Sebenarnya kita bisa menjalankan kedua hal diatas dengan satu perintah, namun terkadang kita hanya memerlukan sebuah controller tanpa perlu membuat model. Jadi sekaligus saya menunjukkan bagaimana membuat controller tanpa perlu membuat model.
Konfigurasi file migration & model
Sekarang kita akan konfigurasi file migration, yaitu file yang berfungsi untuk membuat table di database. Semua file migration disimpan di direktori database/migrations. Kita akan edit file migration untuk model Post. Nama filenya bisa dilihat saat kita membuat file model pada langkah sebelumnya, dalam tulisan ini berarti 2018_04_21_043514_create_posts_table.php . Edit sehingga menjadi seperti berikut
<?php use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreatePostsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('posts', function (Blueprint $table) { $table->increments('id'); $table->string('judul'); $table->text('isi'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('posts'); } }
Kita jalankan migrate untuk membuat table di database.
php artisan migrate
Respon berikut menandakan Laravel berhasil membuat tabel di database:
Migration table created successfully. Migrating: 2018_04_21_043514_create_posts_table Migrated: 2018_04_21_043514_create_posts_table
Sekarang kita akan mengedit file modelnya. Secara default, file model terletak di direktori app. Di langkah sebelumnya modelnya kita beri nama Post, kita akan cari file Post.php di folder app. Edit file tersebut sehingga menjadi
<?php namespace App; use Illuminate\Database\Eloquent\Model; class Post extends Model { protected $fillable = [ 'judul', 'isi' ]; }