Ok saya lanjutkan pembahasan seri Laravel untuk Pemula ini, sekarang sudah seri ke-2 dan kali ini akan melanjutkan dari pembahasan sebelumnya yaitu tentang Migration dan Model. Bagi yg belum membaca seri sebelumnya bisa baca disini.

Oh iya untuk Laravelnya masih pakai yang ditutorial sebelumnya ya supaya tidak lama :).

Sebelum masuk migration terlebih dahulu kita buat databasenya dulu karena kita akan masuk pada interaksi dengan database, maka dari itu buatlah database dengan nama bebas terserah kalian lalu pada .env file ubah konfigurasinya sebagai berikut :

DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

yang perlu kita ubah disini adalah hanya yang berhubungan dengan database saja seperti DB_DATABASE, DB_USERNAME dan DB_PASSWORD sesuaikan dengan database kalian.

 

Migration

Migration sendiri berfungsi untuk membuat bluprint atau schema atau rancangan tabel untuk database yang kita buat, bahasa mudahnya bisa disebut membuat tabel. Mungkin kalian sedikit bertanya kenapa tidak di phpmyadmin atau pakai tools database lainnya?.

Jawabannya adalah integrasi antar anggota tim, maksudnya dengan adanya migration ini kalian hanya membuat file migration ini sekali dan anggota tim lain hanya perlu menjalankan file migration yang sudah dibuat maka semua akan memiliki rancangan tabel yang sama dan tidak perlu repot untuk memikirkan tipe data, panjang dan lain - lain.

Ok tanpa berlama - lama lagi kita akan buat file migration-nya. Untuk membuat migration Laravel juga sudah menyediakan command khusus untuk membuat migration, contoh commandnya seperti ini :

php artisan make:migration create_students_table

Ketika command dijalankan maka file migration akan dibuat pada directory database/migrations, jika kalian perhatikan format penulisan create_students_table maksudnya file migration akan membuat rancangan untuk tabel students nantinya.

File migration yang sudah kita buat awalnya kurang lebih seperti ini :

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateStudentsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('students', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('students');
    }
}

Diatas adalah file migration basic, terdapat 2 method utama yaitu up() dan down() pada method up() berisi field yang akan dibutuhkan pada tabel tersebut sedangkan down() berisi perintah untuk men-drop tabel yang sudah ada jika command migration:refresh dijalankan.

Nah sekarang kita tambahkan field yang dibutuhkan untuk tabel students ini. Ingat untuk mendefinisikan kita buat pada method up() ya.

$table->string('nis', 20)->unique();
$table->string('name');
$table->integer('age');

Pada kode diatas saya  mendefinisikan 3 field yaitu nis, name, dan age, nis dan name bertipe string dan age bertipe integer dan juga pada nis terdapat key unique untuk mencegah duplikat data. 

Untuk melihat daftar jenis field yang bisa digunakan bisa cek ke website Laravel langsung.

Ok sebelum melakukan migrate, coba kalian buka file migration create_users_table dan create_password_resets_table, nah pada create_users_table tambahkan panjang field pada email sebesar 191 dan begitu juga pada create_password_resets_table.

create_users_table

$table->string('email', 191)->unique();

create_password_resets_table

$table->string('email', 191)->index();

Ini bertujuan agar saat proses migrate tidak terjadi error Specified key was to long. Sekarang kalian bisa jalankan migrate-nya.

php artisan migrate

Jika proses migrate sukses maka akan ada 4 tabel yang ada pada database kalian yaitu : migrations, password_resets, students dan user.

 

Model

Masalah database dan tabel sudah selesai, nah sekarang kita akan bermain dengan data baik itu menginput data ke tabel, update data, get data dan lain - lain.

Semua itu adalah tugas dari model, 1 model akan merepresentasikan 1 tabel sebagai contoh kita akan buat model Student yang merepresentasikan tabel students tadi.

jalankan command berikut untuk membuat model :

php artisan make:model Student

File model akan tersimpan pada folder app. Basic file model-nya kurang lebih seperti ini.

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Student extends Model
{
    //
}

Yang pertama harus dilakukan adalah mendifinisikan field apa saja yang terdapat dalam tabel students. Cara mendefinisikannya dalam model cukup mudah tinggal buat properti protected $fillabel lalu berisi array dari field.

protected $fillable = [
      'nis',
      'name',
      'age'
];

Laravel secara otomatis akan mendeteksi nama tabel dengan format plural dari nama model, jadi jika nama modelnya Student maka tabel yang akan dicari adalah tabel students.

Bagaimana jika nama tabelnya custom atau tidak menggunakan format plural? caranya cukup mudah tinggal tambahkan properti protected $table lalu assign dengan nama tabelnya.

protected $table = 'nama_tabel';

Nah sekarang kita akan mencoba memasukan data ke database menggunakan model yang sudah dibuat.

Pertama kita buat route-nya dulu.

Route::get('create-student', 'StudentController@create');

Kedua kita buat controllernya.

php artisan make:controller StudentController

Lalu kita import model Student di StudentController.

use App\Student;

dan kita buat method create.

public function create() {
     Student::create([
         'nis'   => '001',
         'name'  => 'Surya',
         'age'   => 20
     ]);
     return 'Input sukses';
}

Selain menggunakan method create bisa juga menggunakan insert bedanya adalah jika kalian menggunakan insert maka tidak akan ada return value alias void dan juga field created_at dan updated_at tidak akan terisi.

Ok jika hasilnya 'Input sukses' maka proses input data berhasil hasilnya bisa dilihat pada tabel students.

Itu tadi cara input data menggunakan model, sekarang kita akan coba menampilkan data yang sudah diinput tadi.

Masih dalam StudentController kita buat method baru seperti berikut :

public function get($nis) {
     $student = Student::where('nis', $nis)->first();
     return 'Nama siswa : '.$student->name.'<br> Umur : '.$student->age
}

Nah disini kita akan mendapatkan siswa berdasarkan nisnya menggunakan route parameter. Jangan lupa tambahkan route-nya ya.

Route::get('get-student/{nis}', 'StudentController@get');

Jika kalian ingin mendapatkan semua data siswa bisa dengan method all.

$students = Student::all();

foreach ($students as $student) {
     echo $student->name;
     echo $student->age;
     echo '<br><br>';
}

Dan masih banyak lagi method yang bisa digunakan untuk model di Laravel ini kalian bisa explore sendiri di dokumentasi Laravel pada bagian Laravel Eloquent.

 

Ok sekian tutorial kali ini tentang Migration dan Model semoga mudah untuk dimengerti, dan jika ada pertanyaan maupun diskusi bisa langsung dikolom komentar ya :)
Untuk kalian yg lagi cari monitor atau aksesoris seperti keyboard, mousepad dan mouse bisa lihat rekomendasi saya di tokopedia ya.