Belajar Framework Yii #19 | Membuat kueri kompleks dengan Active Record
Muhammad Rafitulloh Nur Ramadhani
12 Juni 2023
Active Record dalam Yii Framework tidak hanya memungkinkan Anda untuk melakukan operasi dasar (Create, Read, Update, Delete) pada data dalam database, tetapi juga memungkinkan Anda untuk membuat kueri kompleks yang lebih lanjut. Dalam artikel ini, kita akan membahas cara membuat kueri kompleks dengan menggunakan Active Record dalam Yii.
Query Builder adalah alat yang kuat dalam Yii yang memungkinkan Anda membuat kueri database secara terstruktur tanpa perlu menulis kueri SQL mentah. Anda dapat menggunakannya dengan model ActiveRecord atau secara independen. Di sini, kita akan fokus pada penggunaannya bersama model ActiveRecord.
Berikut adalah contoh penggunaan Query Builder untuk membuat kueri sederhana:
use app\models\Post;
// Membuat instance dari Query Builder
$query = Post::find();
// Menambahkan kondisi WHERE
$query->where(['status' => 1]);
// Menyortir hasil kueri
$query->orderBy(['created_at' => SORT_DESC]);
// Mengambil hasil kueri
$posts = $query->all();
Pada contoh di atas, kita membuat instance dari Query Builder dengan menggunakan model Post
. Kemudian, kita menambahkan kondisi WHERE
untuk mengambil hanya posting dengan status
sama dengan 1, kemudian kita menyortir hasilnya berdasarkan created_at
secara descending, dan akhirnya mengambil semua hasil kueri.
Anda juga dapat membuat kueri yang lebih kompleks dengan menambahkan kondisi, penggabungan (join), dan lebih banyak lagi. Berikut adalah contoh penggunaan Query Builder yang lebih kompleks:
use app\models\Post;
use app\models\Comment;
// Membuat instance dari Query Builder
$query = Post::find()
->select(['post.id', 'post.title', 'COUNT(comment.id) as comment_count'])
->joinWith('comments')
->groupBy(['post.id', 'post.title'])
->having(['>', 'comment_count', 10])
->orderBy(['comment_count' => SORT_DESC]);
// Mengambil hasil kueri
$posts = $query->all();
Pada contoh ini, kita mengambil kolom id
dan title
dari tabel post
serta menghitung jumlah komentar (comment_count
) dari tabel comment
yang terkait dengan setiap posting. Kita juga melakukan penggabungan dengan tabel comments
, mengelompokkan hasil berdasarkan id
dan title
, hanya mempertahankan grup dengan comment_count
lebih dari 10, dan menyortir hasil berdasarkan comment_count
secara descending.
Selain Query Builder, Anda juga dapat menggunakan kueri SQL mentah dengan menggunakan createCommand()
. Berikut adalah contoh:
use yii\db\Expression;
// Membuat kueri SQL mentah
$query = Yii::$app->db->createCommand('
SELECT post.id, post.title, COUNT(comment.id) as comment_count
FROM post
LEFT JOIN comment ON post.id = comment.post_id
GROUP BY post.id, post.title
HAVING comment_count > :count
ORDER BY comment_count DESC
', [':count' => 10]);
// Mengeksekusi kueri
$posts = $query->queryAll();
Pada contoh ini, kita menggunakan createCommand()
untuk membuat kueri SQL mentah yang kompleks dan menggabungkannya dengan parameter :count
. Kemudian kita mengeksekusi kueri tersebut dan mengambil hasilnya.
Dengan menggunakan Query Builder atau kueri SQL mentah, Anda dapat membuat kueri database yang lebih kompleks dengan mudah dalam Yii Framework. Ini memungkinkan Anda untuk mengambil data dengan lebih tepat sesuai kebutuhan aplikasi Anda, menggabungkan tabel, dan melakukan operasi lainnya pada database dengan efisien. Dengan pemahaman ini, Anda dapat mengembangkan aplikasi Yii yang kuat dengan manipulasi data yang kompleks sesuai dengan kebutuhan Anda.
Artikel Lainnya Dengan Kategori Terkait :
1. Belajar Framework Yii #01 | Pengertian Framework Yii dan Kelebihannya
2. Belajar Framework Yii #02 | Alur Kerja Umum Yii dan MVC
3. Belajar Framework Yii #03 | Instalasi Yii Framework
4. Belajar Framework Yii #04 | Pemahaman tentang Model-View-Controller (MVC) pada Framework Yii
5. Belajar Framework Yii #05 | Model Yii : Membuat Model
6. Belajar Framework Yii #06 | Model Yii : Validasi Data
7. Belajar Framework Yii #07 | Model Yii : Menghubungkan Database
8. Belajar Framework Yii #08 | View Yii : Membuat Tampilan Yii
9. Belajar Framework Yii #09 | View Yii: Widget Bawaan Yii
10. Belajar Framework Yii #10 | View Yii: Membuat Tampilan Dinamis
11. Belajar Framework Yii #11 | Controller Yii: Membuat Action dalam Controller
12. Belajar Framework Yii #12 | Controller Yii: Menggunakan Filter
13. Belajar Framework Yii #13 | Controller Yii: Memahami Request
14. Belajar Framework Yii #14 | Routing Yii : Memahami Konfigurasi
15. Belajar Framework Yii #15 | Routing Yii : Membuat rute khusus
16. Belajar Framework Yii #16 | Routing Yii : Memahami Konsep pretty's URL
17. Belajar Framework Yii #18 | Menggunakan ActiveRecord untuk manipulasi data
18. Belajar Framework Yii #19 | Membuat kueri kompleks dengan Active Record
19. Belajar Framework Yii #20 | Membuat dan Mengelola Formulir dengan Yii
20. Belajar Framework Yii #21 | Menggunakan validasi pada formulir Yii
21. Belajar Framework Yii #22 | Menangani input dan output form dengan Yii
22. Belajar Framework Yii #23 | Security : Pengelolaan autentikasi dan otorisasi dengan Yii
23. Belajar Framework Yii #24 | Security : Implementasi Fitur Keamanan Yii
24. Belajar Framework Yii #25 | Memahami penggunaan tema (themes) dalam Yii
25. Belajar Framework Yii #26 | Menggunakan ekstensi Yii dan membangun ekstensi kustom
26. Belajar Framework Yii #27 | Membuat API menggunakan Yii
27. Belajar Framework Yii #28 | Melakukan pengujian unit dengan PHPUnit
28. Belajar Framework Yii #29 | Menggunakan alat bantu debugging dalam Yii
29. Belajar Framework Yii #30 | Menangani error dan log dalam Yii
30. Belajar Framework Yii #31 | Memahami caching dalam Yii untuk meningkatkan performa
31. Belajar Framework Yii #32 | Menyesuaikan konfigurasi aplikasi Yii untuk kebutuhan khusus
32. Belajar Framework Yii #33 | Menerapkan praktik pengembangan yang efisien dalam Yii
33. Belajar Framework Yii #34 | Mengoptimalkan query database dengan Active Record di Yii
35. Belajar Framework Yii #36 | Menyesuaikan URL routing untuk meningkatkan SEO pada Yii
36. Belajar Framework Yii #37 | Mengoptimalkan penggunaan memori dalam aplikasi Yii
40. Mempelajari Framework Yii #17 Menghubungkan Yii dengan database
Ahmad Dika Zulfahmi - 18 Februari 2025
Jungler Tank Bisa Kembali? Update yang Bisa Membawa Jungler Tank ke Meta Lagi
Ahmad Dika Zulfahmi - 06 Februari 2025
Setting Sensitivitas Auto Headshot Free Fire Terbaik
Ahmad Dika Zulfahmi - 03 Februari 2025
Flash Sale Minaplay! Top Up Diamond Free Fire Murah & Cepat!