Eloquent ORM di Laravel, Membuat Model Aplikasi

Laravel menyediakan cara mudah dalam mengakses database yaitu Eloquent ORM (Object Relational Model), sebuah implementasi ActiveRecord ketika bekerja dengan database. Setiap tabel database memiliki hubungan dengan model yang digunakan untuk berinteraksi dengan tabel tersebut.

Pada tulisan sebelumnya, kita sudah memiliki tabel dalam database yang dibuat melalui migration bernama cities dan memasukkan data dummy ke dalam tabel tersebut. Tulisan ini akan melanjutkan pemodelan data yang dihubungkan dengan tabel dan data di dalamnya.

Model aplikasi mengijinkan untuk query data di dalam tabel, serta menambahkan, mengubah atau menghapus data tersebut. Tulisan kali ini akan membahas cara membuat model, bagaimana ketentuan dalam model dan mengambil data (query) yang akan ditampilkan ke laman web.

Membuat Model

Membuat model dapat dilakukan dengan menggunakan perintah Artisan make:model. Model yang akan dibuat bernama City dan dihubungkan ke tabel cities yang terdapat di database.

$ php artisan make:model City

Dalam pembuatan model, migration dapat dibuat secara otomatis dibuat dengan menyertakan opsi --migration atau disingkat -m. Berikut perintah pembuatan model beserta migration:

$ php artisan make:model City --migration
$ php artisan make:model City -m
Model created successfully.
Created Migration: 2019_03_17_005308_create_cities_table

Model yang dibuat dengan perintah Artisan di atas akan disimpan di file app/City.php, berikut isi file model City:

<?php
namespace App;

use Illuminate\Database\Eloquent\Model;

class City extends Model
{
    
}

Ketentuan Pemodelan

Eloquent menganggap bahwa kelas model City secara otomatis terhubung dengan tabel cities, bentuk jamak dari nama kelas tersebut. Begitu pula ketika model User dibuat, maka diasumsikan terdapat tabel users di database yang dihubungkan dengan model tersebut. Keterkaitan model dengan tabel database tersebut dapat didefinisikan secara manual dengan melalui properti $table:

class City extends Model
{
    protected $table = 'tbl_city';    
}

Selain nama tabel, Eloquent juga menganggap bahwa setiap tabel memiliki kolom bernama id sebagai primary key. Gunakan properti $primaryKey jika ingin menggunakan nama kolom lain sebagai primary key tabel:

class City extends Model
{
    ...
    protected $primaryKey = 'city_ID';    
}

Elequent juga memiliki 2 kolom timestamp yang selalu ada di model yaitu created_at dan updated_at. Jika tidak menginginkan keberadaan kolom timestamp ini, set properti $timestamps menjadi false.

class City extends Model
{
    ...
    protected $timestamps = false;
}

Sama seperti pada tulisan sebelumnya membuat migration database, struktur tabel cities ketika dibuat menggunakan schema builder adalah sebagai berikut:

Schema::create('cities', function (Blueprint $table) {
    $table->bigIncrements('id');
    $table->string('name');
    $table->string('map');
    $table->timestamps();
});

Masukkan data dummy dengan menggunakan seeder database, dan query data tersebut pada model dengan query builder. Sebagai contoh memanggil semua data dengan metode all():

App\City::all();

Terakhir, untuk memastikan model berjalan dengan baik dengan memanggil metode di atas untuk ditampilkan ke dalam view seperti di bawah ini:

...
<h1>Daftar Kota Jabodetabek</h1>
@php $cities = App\City::all(); @endphp
<ul class="list-group">
    @foreach ($cities as $city)
    <li class="list-group-item">
        <a href="{{ $city->map }}" target="_blank">
            {{ $city->name }}
        </a>
    </li>
    @endforeach
</ul>
...

Kode Github

Leave a comment

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *