Site icon agussuratna.net

Tutorial Laravel 11 : #12 Eloquent Laravel

Pengertian Eloquent

Eloquent merupakan salah satu fitur Laravel yang dapat dimanfaatkan untuk mengakses dan memanipulasi data yang tersimpan di dalam database dengan perintah yang lebih singkat dan mempercepat proses pembuatan CRUD dari database.

Eloquent adalah sebuah fitur untuk mengelola data yang ada pada database dengan sangat mudah. Eloquent ORM menyediakan fungsi-fungsi active record atau fungsi-sungsi query sql untuk mengelola data pada database.

Dan fungsi querynya semua sudah dibuat dan disediakan secara default dalam laravel, jadi kita tidak perlu lagi mengetik query sql yang panjang-panjang. Untuk lebih lengkapnya kita bisa membaca di eloquent orm.

Simpelnya dengan Eloquent kita bisa mengelola data yang ada pada database hanya dari satu buah model, misalnya kita punya table tbl_siswa, maka kita juga akan mempunyai sebuah model dengan nama SiswaModel, dengan model SiswaModel ini kita bisa mengelola data-data yang ada pada tabel tbl_siswa dengan mudah dan cepat.

Kita bisa menginput data, mengedit, menampilkan, mengupdate, bahkan kita juga bisa menggunakan relasi tabel dengan sangat mudah, struktur penulisan coding-nya pun sangat singkat. Jika secara manual pada PHP native, jika kita ingin mengakses atau menampilkan data dari table tbl_siswa, biasanya kita menggunakan query “select * from siswa”.

Jika kita menggunakan eloquent laravel kita cukup mendefinisikan nama modelnya, kemudian kita bisa langsung menggunakan fungsi all() untuk mengambil semua data pada table siswa, jadi codingan kita sangat pendek.

 

Eloquent vs Query Builder

Eloquent merupakan Active Record Implementation pada Laravel dan digunakan sebagai Model. Salah satu contoh penggunaannya adalah apabila dibutuhkan untuk membuat sistem CRUD tentang buku maka harus disiapkan tabel pada database dan membuat Model untuk proses CRUD-nya.

Laravel juga menyediakan Query Builder yang dapat dimanfaatkan untuk melakukan pengaksesan data yang bersifat kompleks. Penggunaan Eloquent untuk hal yang bersifat umum lebih membantu programmer untuk dapat menyelesaikan pembuatan program dengan lebih cepat.

Persiapan

Kita lakukan konfigurasi database pada file .env nya, dDi sini saya membuat project laravel dengan nama latihan_laravel dengan nama databasenya datasekolah.

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=datasekolah
DB_USERNAME=root
DB_PASSWORD=

Sebagai contoh kita akan membuat sebuah table data dan sebuah model yang akan meng-handle table ini, misalnya kita akan membuat sebuah table untuk meyimpan data guru, jadi kita buat dulu model gurunya.

Untuk membuat model pada laravel kita bisa membuatnya secara manual atau dengan menggunakan perintah php artisan.

Untuk membuat model menggunakan php artisan kita buka terminal atau cmd, kemudian masuk ke direktori project laravelnya dan ketik perintah berikut :

php artisan make:model GuruModel

atau jika kita ingin membuatkan langsung dengan file migration untuk table/model guru ini kita bisa menulis perintah berikut :

php artisan make:model GuruModel -m

atau

php artisan make:model GuruModel --migration

Perhatikan pada gambar di atas, kita memerintahkan untuk membuat model dengan nama “GuruModel” yang terletak di dalam folder latihan_laravel\app\Models, file migration yang dibuat namanya “create_guru_models_table” ada tambahan huruf s, hal ini karena secara otomatis laravel menerapkan sistem plural atau jamak dengan bahasa inggris, jadi pada saat kita membuat model dengan nama GuruModel, laravel menganggap nama table yang akan kita buat adalah guru_models.

Hal ini tidak menjadi masalah, laravel hanya ingin memudahkan kita dalam penamaan. Kita bisa mengatasi masalah ini nantinya jika kita tidak ingin menggunakan plural dari laravel.

Cara membuat migration bisa dibaca pada tutorial https://agussuratna.net/2025/01/tutorial-laravel-11-migration-laravel/ .

Selanjutnya kita buka file migration create_guru_models_table nya tadi, kemudian tambahkan kolom-kolom yang ingin kita buat pada table tbl_guru, caranya sudah dijelaskan pada tutorial sebelumnya tentang migration laravel. Pada contoh ini saya akan menambahkan kolum id, nama dan alamat saja.

latihan_laravel/database/migrations/2025_01_29_013340_create_guru_models_table.php :

<?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('tbl_guru', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('nip');
            $table->string('nama');
            $table->text('alamat');
            $table->timestamps();
        });
    }

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

Perhatikan pada file migration di atas, karena kita akan membuat table “tbl_guru”, bukan “guru_models”, jadi kita ubah menjadi “tbl_guru”.

Kemudian migrate dengan mengetikkan perintah berikut :

php artisan migrate

Sekarang sudah berhasil migration dan lihat database datasekolah, kita sudah punya table tbl_guru sekarang, sesuai dengan yang kita buat pada file migration guru.

 

 

Cara Penggunaan Eloquent Laravel

Sampai tahap ini kita sudah siap untuk menggunakan Eloquent laravel, di sini kita coba dasarnya dahulu, pada tutorial selanjutnya kita akan masuk ke tahap yang lebih komplek dengan langsung belajar membuat CRUD dengan eloquent.

Kita akan mencoba menampilkan data dari database dengan dengan menggunakan fitur eloquent laravel, karena kita akan mencoba menampilkan data dari table tbl_guru, kita perlu beberapa data testing pada table guru, saya akan mencoba menginput data dummy ke table tbl_guru dengan menggunakan fitur seeding laravel.

Fitur seeding laravel bisa dibaca pada tutorial  tutorial seeding dan faker pada laravel.

Karena menyita waktu jika kita menginput data ke table tbl_guru secara manual, jadi kita gunakan fitur yang sudah ada di laravel.

 

Menginput data dummy dengan Faker dan Seeding Laravel

Kita buat class seedingnya terlebih dulu, di sini saya membuat class seeding dengan nama GuruSeeder.

php artisan make:seed GuruSeeder

Maka akan dibuatkan sebuah file seeder dalam latihan_laravel/database/seeders. Buka file GuruSeeder.php nya dan terapkan Faker di dalamnya.

latihan_laravel/database/seeders/GuruSeeder.php :

<?php

namespace Database\Seeders;

use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;

use Illuminate\Support\Facades\DB;
use Faker\Factory as Faker;

class GuruSeeder extends Seeder
{
    /**
     * Run the database seeds.
     */
    public function run(): void
    {
        //input data ke table tbl_guru dengan data faker 
        $faker = Faker::create('id'); 
        
        // membuat data dummy sebanyak 10 record 
        for($x = 1; $x <= 10; $x++)
        { 
            // insert data dummy guru dengan faker 
            DB::table('tbl_guru')->insert([ 
                'nip' => $faker->numerify(18, true), // 18 digit angka 
                'nama' => $faker->name, 
                'alamat' => $faker->address, 
            ]); 
        }
    }
}

Kemudian jalankan seedernya dengan perintah php artisan.

php artisan db:seed --class=GuruSeeder

Sekarang kita sudah punya data dummy untuk mencoba fitur eloquent nantinya.

 

 

Eloquent Laravel

Setelah kita punya data untuk mencoba fitur Eloquent Laravel, sekarang buka lagi file model GuruModel.php. Seperti yang sudah dijelaskan sebelumnya, laravel menerapkan sistem plural atau jamak pada penamaan model dan table, maka kita set dulu nama table yang akan dihandle oleh model Guru.php, karena secara default laravel menganggap table yang di handle oleh model Guru.php adalah table gurus, sedangkan nama table kita adalah guru.

Jadi kita bisa melakukan pengaturan pada model GuruModel.php dengan menambahkan perintah :

protected $table = "tbl_guru";

agar model GuruModel.php men-handle table tbl_guru, bukan guru_models.

latihan_laravel/app/Guru.php :

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Guru extends Model
{
    use HasFactory;
    protected $table = "tbl_guru";
}

 

Selanjutnya buat controller dengan nama GuruController.php menggunakan php artisan.

php artisan make:controller GuruController

Jika sudah ada controller GuruController nya, gunakan saja controller yang sudah ada tersebut.

Kemudian buat route untuk menampilkan data guru dengan eloquent :

latihan_laravel/routes/web.php :

Route::get('/guru', [GuruController::class,'index']);

di sini kita membuat pengaturan saat route ‘/guru’ diakses, maka akan dijalankan method index() pada GuruController.php.  Kemudian pada GuruController.php buat method baru dengan nama index() seperti berikut :

latihan_laravel/app/Http/controllers/GuruController.php :

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

//panggil model GuruModel
use App\Models\GuruModel;

class GuruController extends Controller
{
    public function index() 
    { 
        // mengambil data guru 
        $dataguru = GuruModel::all();
        
        // mengirim data guru ke view guru 
        return view('guru/v_guru', ['var_guru' => $dataguru]); 
    }
}

Perhatikan pada controller guru di atas, pertama pada bagian luar class kita panggil model GuruModel, sesuai dengan letak model yang terletak dalam folder app\Models.

use App\Models\Guru;

Pemanggilannya kita tidak usah ketik manual, ketika di dalam method index() kita mengetikan GuruModel akan muncul sugestion, klik saja sugestion tersebut, maka use App\Models\Guru; akan mucul otomatis.

Kemudian pada method atau function index() (sesuai dengan yang kita buat pada route) kita menggunakan fitur eloquent dengan mengambil data dari table tbl_guru hanya dengan fungsi all() dan terakhir kita passing datanya ke view v_guru, yang ada dalam folder guru di dalam folder latihan_laravel\resources\views.

Selanjutnya kita buat sebuah view baru dengan nama v_guru.blade.php.

latihan_laravel/resources/views/guru.blade.php

<!DOCTYPE html>
<html>
    <head>
        <title>Tutorial Laravel : Eloquent Laravel</title>
    </head>
    
    <body>
        <h1>Data Guru</h1>
        <h3>www.agussuratna.net</h3>
        <ul>
            @foreach($var_guru as $g)
            <li>
                {{ "NIP : ". $g->nip . ' |Nama : '. $g->nama . ' | Alamat : ' . $g->alamat }}    
            </li>
            @endforeach
        </ul>
    </body>
</html>

Pada view v_guru.blade.php kita tangkap data yang dikirim dari controller dan kita tampilkan dengan menggunakan foreach(), sekarang kita coba jalankan.

php artisan serve

dan akses localhost:8000/guru. Maka hasilnya akan seperti berikut :

Berkenalan Lebih Dalam dengan Eloquent

Jika sebelumnya kita telah berhasil menampilkan semua data yang ada pada table guru, sekarang kita akan berkenalan sedikit lebih jauh dengan beberapa fungsi eloquent yang bisa kita gunakan dikemudian hari pada saat membangun aplikasi atau sistem informasi.

Eloquent telah menyediakan beberapa fungsi lainnya seperti menyeleksi data berdasarkan ID data, menampilkan record data yang pertama, meyeleksi data yang lebih spesifik (WHERE) dan masih banyak lagi.

Mendapatkan Data Record Yang Pertama ( first () )

Pada method index(), coba kita gunakan fungsi first() seperti contoh berikut :

public function index()
{
    // mengambil data guru yang pertama
    $dataguru = GuruModel::first();

    // mengirim data guru ke view guru
    return view('guru/v_guru', ['var_guru' => $dataguru]);
}

Maka yang tampil adalah data guru yang pertama, dan pemanggilan pada view nya juga harus di ubah karena hanya ada 1 data, jadi tidak perlu di looping, menjadi seperti berikut :

<!DOCTYPE html>
<html>
    <head>
        <title>Tutorial Laravel : Eloquent Laravel</title>
    </head>
    
    <body>
        <h1>Data Guru</h1>
        <h3>www.agussuratna.net</h3>
        <ul>
            <li>
                {{ "NIP : ". $var_guru->nip . ' |Nama : '. $var_guru->nama . ' | Alamat : ' . $var_guru->alamat }}    
            </li>
        </ul>
    </body>
</html>

 

 

Mendapatkan Data Berdasarkan ID ( find() )

Untuk menyeleksi data guru berdasarkan id, kita bisa menggunakan fungsi find(). Perhatikan contoh berikut :

public function index()
{
    // mengambil data guru yang id nya 1
    $dataguru = GuruModel::find(1);
    
    // mengirim data guru ke view guru
    return view('guru/v_guru', ['var_guru' => $dataguru]);
}

Di dalam parameter fungsi find() kita bisa mengisi id guru yang ingin ditampilkan, pada contoh di atas kita memasukkan angka 1.

 

 

Seleksi Data dengan ( where() )

Jika kita buutuh Query yang lebih spesifik lagi kita bisa gunakan fungsi where, misalnya kita ingin menyeleksi data guru yang bernama Ahmad Sobar, maka querynya seperti berikut :

public function index()
{
    // mengambil data guru yang bernama Ahmad Sobar
    $dataguru = GuruModel::where('nama', 'Ahmad Sobar')->get();
    
    // mengirim data guru ke view guru
    return view('guru/v_guru', ['var_guru' => $dataguru]);
}

atau

// mengambil data guru yang bernama Ahmad Sobar 
$dataguru = GuruModel::where('nama','=','Ahmad Sobar')->get();

Ada banyak yang bisa kita terapkan fungsi where() ini, di antaranya jika kita ingin menampikan data guru yang id nya lebih besar dari 10 kita bisa menulisnya seperti berikut :

// mengambil data guru yang id nya lebih besar dari 10
$dataguru = GuruModel::where('id','>',10)->get();

Jika ingin lebih besar atau sama dengan 10,

// mengambil data guru yang id nya lebih besar atau sama dengan 10
$dataguru = GuruModel::where('id','>=',10)->get();

Jika ingin menampilkan data guru yang id nya lebih kecil dari, bisa menggunakan tanda “<“. Jika ingin membuat pencarian data, misalnya ingin menampilkan semua data guru yang ada huruf a nya, maka penulisannya seperti berikut :

// mengambil data guru yang di namanya ada huruf a
$dataguru = GuruModel::where('nama', 'like' , '%a%')->get();

Membuat Pagination

Jika kita ingin membuat pagination, kita bisa gunakan fungsi paginate() dan isi paremeternya dengan berapa jumlah record data yang ingin ditampilkan perhalaman.

// menampilkan 10 data guru per halaman
$dataguru = GuruModel::paginate(10);

Selanjutnya untuk membuat link penomoran paginationnya, baca di sini. Masih banyak lagi kelebihan kita menggunakan Eloquent laravel. Bahkan kita juga bisa langsung menerapkan relasi table seperti Many to Many atau One to Many dan lain-lain, akan dibahas pada tutorial laravel selanjutnya.

 

 

Referensi :

Exit mobile version