Biasakan Untuk Menggabungkan Query Yang Sama
Kesalahan kecil bisa berakibat fatal terhadap sistem yang sedang kita bangun, terlihat tidak ada dampak, padahal aslinya, itu sangat jelek sekali.
Share
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();
phpCopy
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'
sqlCopy
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');
phpCopy
Dengan demikian, maka query yang terjadi dalam sql akan satu kali saja seperti ini:
select * from posts where status in ( 'published', 'archived', 'scheduled' )
sqlCopy
Itu saja untuk artikel ini, semoga bermanfaat 🙂