Tutorial Laravel 8 #12 : Eloquent Laravel

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 siswa, maka kita juga akan mempunyai sebuah model dengan nama siswa, dengan model siswa ini kita bisa mengelola data-data yang ada pada tabel 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 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 CRUDnya.

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 siapkan dahulu database dan lakukan konfigurasi database pada file .env nya. Di 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 Guru

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

php artisan make:model Guru -m

atau

php artisan make:model Guru --migration

Perhatikan pada gambar di atas, kita memerintahkan untuk membuat model dengan nama “Guru”, file migration yang dibuat namanya “create_gurus_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 guru, laravel menganggap nama table yang akan kita buat adalah gurus.

Baca Juga  Tutorial Laravel 8 #13 : CRUD Laravel Menggunakan Eloquent

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 http://agussuratna.net/2021/04/16/tutorial-laravel-8-migration-laravel/

Selanjutnya kita buka file migration create_gurus_table nya tadi, file migration yang lain boleh kita hapus saja dulu, agar tidak pusing. Kemudian tambahkan kolom-kolom yang ingin kita buat pada table 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/2021_04_15_161822_create_gurus_table

<?php

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

class CreateGurusTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('guru', function (Blueprint $table) {
            $table->increments('id');
            $table->string('nama');
            $table->text('alamat');
            $table->timestamps();
        });
    }

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

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

Kemudian migrate dengan mengetikkan perintah berikut :

php artisan migrate

Sekarang sudah berhasil migration dan lihat database datasekolah, kita sudah punya table 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 guru, kita perlu beberapa data testing pada table guru, saya akan mencoba menginput data dummy ke table pegawai 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 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

use Illuminate\Database\Seeder;
use Faker\Factory as Faker;

class GuruSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        //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('guru')->insert([
                'nip' => $faker->nip,
                'nama' => $faker->nama,
                'alamat' => $faker->alamat,
            ]);
        }
    }
}

Kemudian jalankan seedernya dengan perintah php artisan.

php artisan db:seed --class=GuruSeeder

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

Baca Juga  Tipe Data Array dan Operator dalam PHP

 

Eloquent Laravel

Setelah kita punya data untuk mencoba fitur Eloquent Laravel, sekarang buka lagi file model Guru.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 Guru.php dengan menambahkan perintah :

protected $table = "guru";

agar model Guru.php men-handle table guru, bukan gurus.

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 = "guru";
}

kemudian buat route untuk menampilkan data guru dengan eloquent :

latihan_laravel/routes/web.php

Route::get('/guru', 'GuruController@index');

di sini kita membuat pengaturan saat route ‘/guru’ diakses, maka akan dijalankan method index pada GuruController.php. Selanjutnya buat controller dengan nama GuruController.php menggunakan php artisan.

php artisan make:controller GuruController

Kemudian pada GuruController.php ketik perintah berikut :

latihan_laravel/app/Http/controllers/GuruController.php

<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;

// panggil model guru
use App\Models\Guru;

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

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

use App\Models\Guru;

Kemudian pada method atau function index (sesuai dengan yang kita buat pada route) kita menggunakan fitur eloquent dengan mengambil data dari table guru hanya dengan fungsi all() dan terakhir kita passing datanya ke view pegawai.

Selanjutnya kita buat sebuah view baru dengan nama 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($guru as $g)
            <li>
                {{ "NIP : ". $g->nip . ' |Nama : '. $g->nama . ' | Alamat : ' . $g->alamat }}    
            </li>
            @endforeach
        </ul>
    </body>
</html>

Pada view 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.

Baca Juga  Hypertext Markup Language (HTML)

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
    $guru = Guru::first();

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

Maka yang tampil adalah data pegawai yang pertama.

 

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
    $guru = Guru::find(1);
    
    // mengirim data guru ke view guru
    return view('guru', ['guru' => $guru]);
}

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
    $guru = Guru::where('nama', 'Ahmad Sobar')->get();
    
    // mengirim data guru ke view guru
    return view('guru', ['guru' => $guru]);
}

atau

// mengambil data guru yang bernama Ahmad Sobar 
$guru = Guru::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
$guru = Guru::where('id','>',10)->get();

Jika ingin lebih besar atau sama dengan 10,

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

Jika ingin menampilkan data pegawai 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
$guru = Guru::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
$guru = Guru::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 :

  • https://www.malasngoding.com/eloquent-laravel/

Add Comment

error: Ga bisa dicopy