Rumahweb Journal
banner Journal - belajar laravel bagian 15

Belajar Laravel Bagian 15 – Mengenal Eloquent Database

Pada sesi belajar Laravel bagian 7-10, kita telah belajar tentang cara menampilkan data dari database melalui Query Builder. Dalam sesi belajar laravel kali ini, kita akan membahas cara menampilkan data dari database menggunakan Eloquent sebagai pembanding.

Apa Itu Eloquent?

Eloquent adalah ORM (Object-Relational Mapping) di Laravel yang memungkinkan interaksi dengan database menggunakan sintaks berbasis objek. Dengan Eloquent, setiap tabel dalam database direpresentasikan sebagai model, sehingga operasi seperti query, insert, update, dan delete dapat dilakukan dengan lebih mudah tanpa menulis SQL secara langsung.

Eloquent juga mendukung fitur seperti relasi antar tabel, query builder, serta aksesors dan mutators untuk memodifikasi data sebelum disimpan atau ditampilkan.

Perbedaan Query Builder dan Eloquent

Perbedaan utama Query Builder dan Eloquent terletak pada operasinya. Berikut ini kami sertakan dengan tabel perbandingannya.

OperasiQuery BuilderEloquent ORM
SelectDB::table(‘users’)->get()User::all()
Contoh$users = DB::table(‘users’)- >get();
//Mengambil semua data
$singleUser = DB::table(‘users’)->
where(’email’,’[email protected]’)
->first(); //Ambil satu data
$users = User::all(); //
Mengambil semua data

$singleUser = User::where(’email’,
[email protected]’)->first();
// Ambil satu data

Menampilkan Data di Database dengan Eloquent

Pastikan Anda telah mengikuti tutorial belajar Laravel sesi 7-10 untuk mengenal CRUD database. Selanjutnya, mari kita coba menampilkan data di database menggunakan Eloquent.

Step 1. Membuat Database di phpMyAdmin

Silakan Anda membuat database di localhost melalui phpMyAdmin. Sebagai contoh, kami membuat database dengan nama dbrw-laraveltutorial.

Pindah Hosting ke Rumahweb Gratis

Step 2. Isi Sample Data

Setelah itu, silakan inputkan script berikut dikolom SQL, untuk membuat table dan mengisi sample datanya.

-- phpMyAdmin SQL Dump
-- version 5.2.1
-- https://www.phpmyadmin.net/
--
-- Host: localhost:3306
-- Waktu pembuatan: 18 Nov 2024 pada 02.32
-- Versi server: 8.0.30
-- Versi PHP: 8.3.9

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Database: `dbrw-laraveltutorial`
--

-- --------------------------------------------------------

--
-- Struktur dari tabel `karyawan`
--

CREATE TABLE `karyawan` (
  `karyawan_id` int NOT NULL,
  `karyawan_nama` text NOT NULL,
  `karyawan_jabatan` text NOT NULL,
  `karyawan_umur` int NOT NULL,
  `karyawan_alamat` varchar(1000) NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

--
-- Dumping data untuk tabel `karyawan`
--

INSERT INTO `karyawan` (`karyawan_id`, `karyawan_nama`, `karyawan_jabatan`, `karyawan_umur`, `karyawan_alamat`) VALUES
(1, 'Rudi', 'Web Designer', 25, 'Jl. Jogja'),
(3, 'Gawati Yulia Yuliarti', 'Belum / Tidak Bekerja', 39, 'Psr. Jend. Sudirman No. 876, Salatiga 94485, Sulsel'),
(4, 'Shakila Unjani Sudiati S.Pd', 'Belum / Tidak Bekerja', 37, 'Ki. Gotong Royong No. 646, Sukabumi 30063, Sulut'),
(5, 'Cinthia Sudiati', 'Biarawati', 35, 'Dk. Dahlia No. 270, Pagar Alam 27372, Sulut'),
(6, 'Gamani Budiman', 'Tukang Cukur', 31, 'Dk. Madiun No. 162, Padang 84417, NTB'),
(7, 'Kamaria Nurdiyanti', 'Konsultan', 40, 'Gg. Cut Nyak Dien No. 315, Pagar Alam 16040, NTB'),
(8, 'Cakrabuana Sitompul S.E.', 'Petani / Pekebun', 27, 'Kpg. Bayan No. 121, Surakarta 95950, DKI'),
(9, 'Paramita Ilsa Widiastuti', 'Penyiar Televisi', 29, 'Ki. Nanas No. 510, Tebing Tinggi 39880, Babel'),
(10, 'Lidya Aisyah Uyainah S.Gz', 'Penata Busana', 32, 'Ds. Jaksa No. 818, Payakumbuh 16409, Pabar'),
(11, 'Oni Rahimah', 'Penata Rias', 25, 'Jln. Industri No. 231, Langsa 99305, Sumbar'),
(12, 'Karen Astuti', 'Desainer', 26, 'Ds. R.M. Said No. 149, Cirebon 24653, Pabar'),
(13, 'Kajen Wasita', 'Penulis', 36, 'Dk. Gajah No. 836, Ambon 15105, Gorontalo'),
(14, 'Lintang Farida S.E.', 'Pedagang', 33, 'Dk. Moch. Toha No. 723, Bontang 86180, Jateng'),
(15, 'Jumari Cengkal Simbolon', 'Wakil Presiden', 28, 'Ki. Bagis Utama No. 784, Bengkulu 27766, Sulteng'),
(16, 'Laras Melani', 'Apoteker', 36, 'Ds. Sukajadi No. 367, Yogyakarta 53106, Malut'),
(17, 'Siti Puspasari', 'Pelaut', 38, 'Psr. Banceng Pondok No. 6, Sabang 96597, Kaltim'),
(18, 'Nadia Hartati', 'Penata Rambut', 37, 'Gg. Katamso No. 18, Tidore Kepulauan 92688, Aceh'),
(19, 'Puput Cici Lailasari S.T.', 'Psikiater / Psikolog', 37, 'Kpg. Baranangsiang No. 12, Tidore Kepulauan 36147, Bengkulu'),
(20, 'Zaenab Safitri', 'Buruh Nelayan / Perikanan', 34, 'Kpg. Gajah Mada No. 825, Padangsidempuan 17341, Kalbar'),
(21, 'Arsipatra Hutasoit', 'Promotor Acara', 25, 'Ds. Salak No. 439, Bitung 97331, Maluku'),
(22, 'Ajimat Dongoran S.Kom', 'Pegawai Negeri Sipil (PNS)', 26, 'Kpg. Kalimantan No. 88, Lhokseumawe 55880, Pabar'),
(23, 'Sabar Utama', 'Penyiar Radio', 26, 'Ki. Baya Kali Bungur No. 349, Bitung 19647, Sulteng'),
(24, 'Gandi Asmuni Firmansyah S.I.Kom', 'Penerjemah', 32, 'Jr. Pelajar Pejuang 45 No. 346, Pekalongan 59404, Bengkulu'),
(25, 'Dadi Daniswara Marpaung S.IP', 'Tukang Gigi', 32, 'Jln. Kiaracondong No. 119, Bau-Bau 79924, Sumut'),
(26, 'Putri Widiastuti', 'Programmer', 35, 'Psr. Gotong Royong No. 493, Palu 75920, Papua');

--
-- Indexes for dumped tables
--

--
-- Indeks untuk tabel `karyawan`
--
ALTER TABLE `karyawan`
  ADD PRIMARY KEY (`karyawan_id`);

--
-- AUTO_INCREMENT untuk tabel yang dibuang
--

--
-- AUTO_INCREMENT untuk tabel `karyawan`
--
ALTER TABLE `karyawan`
  MODIFY `karyawan_id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=53;
COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

Step 3. Sesuaikan Config Database

Lakukan pengaturan config database di file .env.

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=dbrw-laraveltutorial
DB_USERNAME=root
DB_PASSWORD=

Keterangan:

  • DB_Database adalah nama database yang telah Anda buat.
  • DB_Username adalah nama user databasenya. Secara default berisi root. 
  • DB_Password adalah password databasenya. Biasanya di localhost kosong

Step 4. Routing

Sesuaikan Route yang berada di routes/web.php untuk mengakses controller KaryawanController.

use Illuminate\Support\Facades\DB;
use App\Http\Controllers\KaryawanController;

// Route untuk menampilkan data Karyawan
Route::get('/karyawan', [KaryawanController::class, 'index']);

Keterangan pada script diatas, saat route ‘/karyawan diakses maka kita akan dibawa ke method index() pada KaryawanController.

Step 5. Controller

Selanjutnya membuat KaryawanController menggunakan perintah artisan berikut.

php artisan make:controller KaryawanController

Letakkan filenya ada di app/Http/Controllers/KaryawanController.php. Isi file KaryawanController.php menggunakan code berikut.

<?php

namespace App\Http\Controllers;

use Illuminate\Support\Facades\DB;
use Illuminate\Http\Request;
use App\Models\Karyawan;

class KaryawanController extends Controller
{
    public function index()
    {
        // Mengambil semua data karyawan
        $karyawan = Karyawan::all();
        
        // Mengirim data ke view
        return view('karyawan.index', ['karyawan' => $karyawan]);
    }
}

Mengambil data karyawan menggunakan perintah:

$karyawan = karyawan::all();

Perintah tersebut merupakan perintah yang mirip dengan select * from karyawan. Selanjutnya datanya dikirim ke view menggunakan perintah

return view('karyawan.index', ['karyawan' => $karyawan]);

Step 6. Model

Membuat model “Karyawan” yang mana model ini akan berinterakhir dengan tabel “karyawan” yang ada di database. Perintah artisannya sebagai berikut.

php artisan make:model Karyawan

Edit Model Siswa.php yang letak model siswa berada di direktori  “app/Models/Karyawan.php”.

<?php

namespace App\Models;

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

class Karyawan extends Model
{
    use HasFactory;
    protected $table = 'karyawan'; // Sesuaikan dengan nama tabel di database

    protected $fillable = ['karyawan_nama','karyawan_jabatan', 'karyawan_umur', 'karyawan_alamat' ];
    protected $primaryKey = 'karyawan_id'; 

}

Step 7. View

Selanjutnya, kita akan belajar laravel untuk membuat view untuk menampilkan data Karyawan, letak filenya ada di resources/views/karyawan/index.blade.php. Pastikan setelah folder Views Anda membuat folder karyawan. Nantinya letak file index.blade.php berada di dalam folder karyawan.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Data Karyawan</title>
</head>
<body>

<h3>Data Karyawan</h3>
 
	<a href="/karyawan/tambah"> + Tambah Karyawan Baru</a>
	
	<br/>
	<br/>


    <table border="1">
        <thead>
            <tr>
                <th>ID</th>
                <th>Nama</th>
                <th>Alamat</th>
            </tr>
        </thead>
        <tbody>
            @foreach($karyawan as $p)
                <tr>
                    <td>{{ $p->karyawan_id }}</td>
                    <td>{{ $p->karyawan_nama }}</td>
                    <td>{{ $p->karyawan_alamat }}</td>
<td>
				<a href="/karyawan/edit/{{ $p->karyawan_id }}">Edit</a>
				|
				<a href="/karyawan/hapus/{{ $p->karyawan_id }}">Hapus</a>
			</td>

                </tr>
            @endforeach
        </tbody>
    </table>
</body>
</html>

Penjelasan:

($karyawan as $p): data yang dikirim controller ke view ditangkap sebagai $karyawan. Selanjutnya untuk memudahkan penulisan $karyawan dimisalkan sebagai $p. 

Selanjutnya dilakukan perulangan menggunakan foreach.

Step 8. Jalankan Aplikasi Laravel

Untuk menjalankan aplikasi Laravel di localhost menggunakan perintah artisan.

php artisan serve

Akses aplikasi di browser dengan URL: http://localhost:8000/karyawan

Jalankan Aplikasi Laravel - belajar laravel

Selamat, sampai disini data Anda sudah tampil. Untuk panduan CRUD lainnya menggunakan Eloquent akan kami tulis di edisi artikel selanjutnya.

Demikian tutorial belajar Laravel bagian ke 15 tentang CRUD, menampilkan data dari database menggunakan Eloquent. Simak terus belajar laravel di Rumahweb Indonesia, semoga bermanfaat.

Bermanfaatkah Artikel Ini?

Klik bintang 5 untuk rating!

Rating rata-rata 5 / 5. Vote count: 1

Belum ada vote hingga saat ini!

Kami mohon maaf artikel ini kurang berguna untuk Anda!

Mari kita perbaiki artikel ini!

Beri tahu kami bagaimana kami dapat meningkatkan artikel ini?

Cloud Hosting Terbaik Rumahweb

Anggit TS

I'm a Technical Support Specialist at Rumahweb Indonesia with a strong passion for front-end development. Skilled in website creation and experienced in content writing. I blend technical expertise with creativity to craft engaging and functional web experiences!

banner pop up - Pindah Hosting ke Rumahweb