; Query Builder dengan orderBy(), select(), dan join() - Blog Rudi Kurniawan

Blog Laravel Indonesia

Belajar Laravel dengan Mudah dan Menyenangkan

Query Builder dengan orderBy(), select(), dan join()
12-07-2025 | Admin User Programming 35 x dilihat

Query Builder dengan orderBy(), select(), dan join()

Apa Itu Query Builder dengan orderBy(), select(), dan join()?

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.

Hubungan dengan Database

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.

Tutorial Menggunakan orderBy(), select(), dan join()

Berikut langkah-langkah menggunakan metode ini untuk tabel posts (kolom: id, user_id, title, content) dan users (kolom: id, name).

Persiapan

Pastikan kamu sudah:

  • Menginstal Laravel dan mengatur koneksi database di file .env.
  • Membuat tabel posts dan users dengan migration serta mengisi data (misalnya, via seeder).
  • Menjalankan php artisan migrate untuk membuat tabel.

Langkah-Langkah

  1. 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.
  2. 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).
  3. 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.
  4. 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.

Mengapa Metode Ini Penting?

  • select(): Mengurangi data yang diambil, meningkatkan efisiensi.
  • orderBy(): Membuat hasil lebih teratur dan mudah dibaca.
  • join(): Menggabungkan data dari tabel terkait untuk informasi yang lebih lengkap.

Contoh Hasil

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"}
]

Langkah Selanjutnya

  • Pelajari metode lain seperti where(), groupBy(), atau having() untuk query lebih kompleks.
  • Kombinasikan Query Builder dengan Blade untuk menampilkan data di tampilan.
  • Baca dokumentasi Query Builder untuk fitur seperti pagination atau subqueries.

Selamat! Kamu sudah menguasai dasar Query Builder dengan orderBy(), select(), dan join() di Laravel!

Share this

Facebook Whatsapp