Modul Praktik - Koneksi Database Dengan Eloquent Untuk Collection Pada Laravel
Modul Praktik - Koneksi Database Dengan Eloquent Untuk Collection Pada Laravel
pada Laravel
Pada modul ini, kita akan belajar bagaimana melakukan koneksi database menggunakan
Eloquent ORM pada Laravel dan memanipulasi data yang diambil dalam bentuk
Collection. Modul ini cocok untuk pemula yang ingin memahami cara menggunakan
Eloquent dan mengelola data dengan Collection di Laravel.
Tujuan:
1. Memahami cara melakukan koneksi database di Laravel.
2. Memahami penggunaan Eloquent ORM untuk mengambil data dari database.
3. Mempraktikkan penggunaan Eloquent Collection untuk memanipulasi data.
Prasyarat:
● Laravel sudah terinstal di komputer Anda.
● Server database (MySQL atau lainnya) telah siap dengan database yang akan
digunakan.
● Pengetahuan dasar tentang PHP dan MySQL.
Jika Anda belum memiliki proyek Laravel, buat proyek baru dengan perintah berikut:
bash
composer create-project --prefer-dist laravel/laravel modul-
eloquent-collection
Setelah proyek Laravel dibuat, buka file .env di dalam folder proyek Anda dan sesuaikan
pengaturan database sesuai dengan server MySQL lokal Anda.
env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=belajar_laravel
DB_USERNAME=root
DB_PASSWORD=
Model adalah representasi tabel di database. Mari kita buat model untuk tabel posts:
bash
php artisan make:model Post
Untuk mulai bekerja dengan data, kita perlu menambahkan beberapa data ke tabel posts.
Kita bisa melakukan ini langsung melalui Eloquent di Tinker atau menambahkan seeding.
Melalui Tinker:
bash
php artisan tinker
php
use App\Models\Post;
Setelah menambahkan beberapa data ke database, kita bisa mengambil data menggunakan
Eloquent dengan perintah berikut di controller atau di route:
php
use App\Models\Post;
Hasil dari query Post::all() akan mengembalikan sebuah Eloquent Collection. Laravel
Collection adalah kumpulan data yang dapat dimanipulasi menggunakan berbagai metode
bawaan.
php
use App\Models\Post;
$posts = Post::all();
3.1. Filter
php
$filteredPosts = $posts->filter(function ($post) {
return $post->created_at > now()->subDays(7); // Filter post
yang dibuat dalam 7 hari terakhir
});
3.2. Map
php
$mappedPosts = $posts->map(function ($post) {
return [
'judul' => strtoupper($post->title),
'konten' => $post->content
];
});
3.3. Pluck
php
$titles = $posts->pluck('title');
3.4. SortBy
SortBy digunakan untuk mengurutkan data dalam collection berdasarkan kolom tertentu.
php
$sortedPosts = $posts->sortBy('title'); // Mengurutkan berdasarkan
judul
3.5. Each
Each digunakan untuk melakukan iterasi pada setiap item dalam collection.
php
$posts->each(function ($post) {
echo $post->title . '<br>';
});
php
<!DOCTYPE html>
<html>
<head>
<title>Daftar Post</title>
</head>
<body>
<h1>Daftar Post</h1>
<ul>
@foreach ($posts as $post)
<li>{{ $post->title }} - {{ $post->content }}</li>
@endforeach
</ul>
</body>
</html>
php
use App\Http\Controllers\PostController;
php
$recentPosts = Post::all()
->filter(function ($post) {
return $post->created_at > now()->subDays(30); // Filter
post yang dibuat dalam 30 hari terakhir
})
->sortByDesc('created_at') // Urutkan berdasarkan tanggal
terbaru
->pluck('title'); // Ambil hanya judul
6. Kesimpulan
Dalam modul ini, kita telah mempelajari:
7. Referensi:
● Laravel Documentation - Eloquent ORM
● Laravel Documentation - Collections
● Laravel News - Collection Methods