;
Belajar Laravel dengan Mudah dan Menyenangkan
Query Builder di Laravel memungkinkan kamu mengambil data dari database dengan sintaks PHP yang sederhana. Metode orderBy() mengurutkan data, select() memilih kolom tertentu, dan join() menggabungkan data dari beberapa tabel.
Metode ini digunakan untuk:
orderBy(): Mengurutkan hasil query berdasarkan kolom tertentu (misalnya, judul postingan secara alfabetis).select(): Membatasi kolom yang diambil untuk efisiensi (misalnya, hanya title dari tabel posts).join(): Menggabungkan tabel terkait, seperti posts dan users, untuk mendapatkan data yang saling berhubungan.Berikut langkah-langkah menggunakan metode ini untuk tabel posts (kolom: id, user_id, title, content) dan users (kolom: id, name).
Pastikan kamu sudah:
.env.posts dan users dengan migration serta mengisi data (misalnya, via seeder).php artisan migrate untuk membuat tabel.Menggunakan select()
Tambahkan rute di routes/web.php untuk memilih kolom tertentu dari tabel posts:
use Illuminate\Support\Facades\DB;
Route::get('/posts', function () {
$posts = DB::table('posts')
->select('title', 'content')
->get();
return $posts;
});
Penjelasan:
select('title', 'content'): Hanya mengambil kolom title dan content, bukan semua kolom.get(): Mengembalikan hasil sebagai koleksi.Menggunakan orderBy()
Tambahkan rute untuk mengurutkan postingan berdasarkan title secara alfabetis:
Route::get('/posts/ordered', function () {
$posts = DB::table('posts')
->select('title', 'content')
->orderBy('title', 'asc')
->get();
return $posts;
});
Penjelasan:
orderBy('title', 'asc'): Mengurutkan berdasarkan kolom title secara ascending (A-Z). Gunakan desc untuk descending (Z-A).Menggunakan join()
Tambahkan rute untuk menggabungkan tabel posts dengan users untuk menampilkan nama pengguna yang membuat postingan:
Route::get('/posts/with-user', function () {
$posts = DB::table('posts')
->select('posts.title', 'posts.content', 'users.name as user_name')
->join('users', 'posts.user_id', '=', 'users.id')
->orderBy('posts.title', 'asc')
->get();
return $posts;
});
Penjelasan:
join('users', 'posts.user_id', '=', 'users.id'): Menggabungkan tabel posts dan users berdasarkan kolom user_id (di posts) dan id (di users).select('posts.title', 'posts.content', 'users.name as user_name'): Memilih kolom dari kedua tabel, dengan alias user_name untuk kolom name.orderBy('posts.title', 'asc'): Mengurutkan hasil berdasarkan title.Jalankan Server
Jalankan server Laravel dengan:
php artisan serve
Uji rute:
http://localhost:8000/posts: Menampilkan title dan content semua postingan.http://localhost:8000/posts/ordered: Menampilkan postingan, diurutkan berdasarkan title.http://localhost:8000/posts/with-user: Menampilkan title, content, dan nama pengguna dari tabel users.Jika tabel posts berisi:
[
{"id": 1, "user_id": 1, "title": "Belajar Laravel", "content": "Laravel mudah..."},
{"id": 2, "user_id": 2, "title": "PHP Framework", "content": "Framework terbaik..."}
]
Dan tabel users:
[
{"id": 1, "name": "Andi"},
{"id": 2, "name": "Budi"}
]
Rute /posts/with-user menghasilkan:
[
{"title": "Belajar Laravel", "content": "Laravel mudah...", "user_name": "Andi"},
{"title": "PHP Framework", "content": "Framework terbaik...", "user_name": "Budi"}
]
where(), groupBy(), atau having() untuk query lebih kompleks.Selamat! Kamu sudah menguasai dasar Query Builder dengan orderBy(), select(), dan join() di Laravel!