Menggabungkan Query yang Sama di Laravel: Panduan Optimalisasi
Kesalahan kecil bisa berakibat fatal terhadap sistem yang sedang kita bangun, terlihat tidak ada dampak, padahal aslinya, itu sangat jelek sekali.
Dalam contoh kali ini kita akan mencoba menampilkan artikel yang kebetulan mempunyai tipe yang berbeda, archived, scheduled, published. Nah jika kita ingin menampilkannya, sangat salah jika kita buat seperti ini.
$publishedPosts = Post::where('status','=','published')->get();
$archivedPosts = Post::where('status','=','archived')->get();
$scheduledPosts = Post::where('status','=','scheduled')->get();
Kenapa salah, karena sebenarnya apa yang dihasilkan dari query tersebut akan menghasilnya query yang berulang terhadap satu tabel seperti ini:
select * from posts where status = 'published'
select * from posts where status = 'archived'
select * from posts where status = 'scheduled'
Nah untuk solusinya, Anda bisa memakai fungsi whereIn dari eloquent seperti ini.
$posts = Post::whereIn('status',['published', 'archived', 'scheduled'])->get();
$published_posts = $posts->where('status','=','published');
$archived_posts = $posts->where('status','=','archived');
$scheduled_posts = $posts->where('status','=','scheduled');
Dengan demikian, maka query yang terjadi dalam sql akan satu kali saja seperti ini:
select * from posts where status in ( 'published', 'archived', 'scheduled' )
Itu saja untuk artikel ini, semoga bermanfaat.
Irsyad A. Panjaitan
Let's start living like no one can help us in any event, so that when we are helped in certain times, it becomes a plus in itself.
Artikel yang Terkait
- Belajar Cache Flexible di Laravel
Irsyad A. Panjaitan
- Membuat Fitur Multi Bahasa di Laravel Inertia React
Irsyad A. Panjaitan
- Laravel Script: composer run dev
Irsyad A. Panjaitan
- Apa yang Baru di Inertia.js 2.0
Irsyad A. Panjaitan
- Membuat Custom Rule Validator untuk Nomor Telepon Indonesia dengan Laravel
Abd. Asis
- Like System dengan Laravel Polymorphic
Irsyad A. Panjaitan
- Laravel Dengan Multi Koneksi Database: Panduan Langkah demi Langkah
Abd. Asis