Press "Enter" to skip to content

Perbandingan Eloquent dan Query Builder Pada Laravel

Pada artikel kali ini saya ingin membahas tentang perbandingan Eloquent dan Query Builder pada Laravel. Yups, Framework Laravel mempunyai dua buah metode untuk berinteraksi dengan database sehingga interaksi dengan database menjadi lebih mudah.

Eloquent ORM

Eloquent ORM pada Laravel menyediakan implementasi Active Record yang berarti bahwa setiap model yang kita buat dalam struktur MVC kamu sesuai dengan tabel dalam database kita. Misalkan, jika saya membuat model dengan nama ‘Post’, maka model tersebut akan sesuai dengan table ‘post’ pada database. Jadi, saya dapat mengakses data dalam tabel ‘post’ sebagai berikut.

Ada banyak fungsi pada Eloquent ORM pada Laravel yang memudahkan pengerjaan script kita.

Query Builder

Seperti namanya, Query Builder pada Laravel menyediakan antarmuka untuk membuat dan menjalankan query dalam database. Query Builder menggunakan PDO parameter binding untuk untuk melindungi aplikasi kita dari serangan injeksi SQL jadi kita tidak perlu lagi melakukan filter string sebagai binding. Contoh query dari Query Builder adalah sebagai berikut :

get();                       // Menampilkan semua data dalam table post
DB::table('posts')->where('id',$id)->first();    // Menampilkan data dalam table post yang sesuai dengan parameter
DB::table('posts')->where('id',$id)->delete();   // Menghapus data
?>

Nah, itu dia definisi dari Eloquent ORM dan Query Builder, sekarang kita bakal coba menguji coba keduanya.

Perbandingan Performa

OK, pada kasus ini saya ingin menginsert data sebanyak 1000 data dalam table ‘country’. Sekarang kita uji coba performa keduanya

Eloquent ORM (Execution time : 1.41 s, Queries Executed : 1000)

label=$i." Row";
         $t->save();
    }
});

?>

 Query Builder (Execution time : 938 ms, Queries Executed : 1000)

insert(["label"=>$i." Row"]);
    }
});
?>

Dari hasil test diatas jelas bahwa Eloquent melakukan proses sedikit lebih lama dibandingan dengan Query Builder jadi pada masalah performa, Query Builder lebih baik dari Eloquent ORM.

Perbandingan Syntax

Nah, sekarang kita akan coba membandingkan keduanya dari segi penulisan syntax.

Eloquent ORM

Query Builder

where('id',$id)->get();
?>

Dilihat dari perbandingan syntax diatas, Eloquent ORM lebih singkat dan lebih mudah diketik daripada Query Builder.

Perbandingan Fungsionalitas

Sebenarnya Eloquent ORM adalah extensi dari Query Builder, jadi kita bisa menggunakan syntax Query Builder didalam Eloquent. Sebaliknya, kita tidak bisa mengakses syntax dari Eloquent jika kita menggunakan Query Builder. Contohnya dari Eloquent adalah sebagai berikut :

with('comments','tags','categories')->get();
?>

Kesimpulan

Dari perbandingan diatas, saya asumsikan bahwa Eloquent sedikit lebih baik dari segi fungsi dan efisiens ketimbang Query Builder namun dengan kekurangan bahwa proses query menjadi lebih lambat daripada Query Builder. Kamu bisa menggunakan keduanya sesuai dengan kebutuhan aplikasimu.

Segitu saja dulu bahasan kita tentang perbandingan Eloquent dan Query Builder Pada Laravel. Semoga bermanfaat. 😀

6 Comments

  1. Asep Dadan Asep Dadan Maret 10, 2016

    mantaaps tutorial nya semangaat untuk belajar laravel

  2. Tirta Tirta Agustus 11, 2016

    Perbantingannya simple sekali. Hanya 2 tabel saja. Coba dibandingkan dengan 4 tabel dengan relasi 1 to many, many to 1, many to many, pake group by, order by, having,

    • dickyabdillah dickyabdillah Agustus 12, 2016

      boleh juga nih perbandingannya lebih banyak.
      biar lebih tahu lagi seberapa cepat masing-masing keduanya.

  3. Ridwan Fauzan Ridwan Fauzan Agustus 11, 2016

    terimakasih gan artikelnya sangat membantu, jadi tau perbedaan tentang Eloquent ORM sama Query Builder.

  4. Donny Kurnia Donny Kurnia Agustus 14, 2016

    Tulisan spt ini udah cukup banyak memakan korban, membuat pemula Laravel jadi tidak pakai Eloquent model demi performansi semu…

  5. cloud server cloud server Agustus 22, 2017

    terimaksih arikelny sangat membantu dan bermanfaat

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *