Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Yii
Code

Bagaimana Memprogram dengan Yii2: ActiveRecord

by
Difficulty:IntermediateLength:MediumLanguages:
This post is part of a series called How to Program With Yii2.
Programming With Yii2: Automated Testing With Codeception
How to Program With Yii2: Running Cron Services

Indonesian (Bahasa Indonesia) translation by Kurniawan Sugi Purwanto (you can also view the original English article)

Final product image
What You'll Be Creating

Jika Anda bertaya, "Apa itu Yii?" periksa jawabannya di tutorial saya sebelumnya: Mengenal Framework Yii, yang mengulas berbagai manfaat Yii termasuk ikhtisar perubahan di Yii 2.0, yang dirilis bulan Oktober 2014.

Di serial Pemrograman dengan Yii ini, saya memandu para pembaca dalam menggunakan Framework Yii untuk PHP. Di tutorial hari ini, akan saya ajak Anda belajar menggunakan object-relational mapping, dikenal dengan ORM, untuk bekerja dengan database. Dikenal sebagai Active Record, inilah salah satu aspek kunci pemrograman aplikasi database secara efisien di Yii.

Yii menawarkan cara yang berbeda untuk bekerja secara terprogram dengan database Anda, misalnya direct queries dan query builder, tetapi penggunaan Active Records menawarkan seperangkat lengkap kemanfaatan bagi pemrograman database berorientasi objek. Pekerjaan Anda menjadi lebih efisien, lebih aman, bekerja di dalam arsitektur model view controller Yii, dan bersifat portabel jika Anda memutuskan untuk mengubah platform database (misalnya MySQL ke PostgreSQL).

Ikuti baik-baik seiring saya memerinci dasar-dasar Active Record dalam Yii.

Hanya sebagai pengingat, saya sungguh-sungguh akan berpartisipasi di thread komentar di bawah ini. Saya khususnya tertarik jika Anda memiliki pendekatan yang berbeda, ide-ide tambahan, atau ingin menyarankan topik untuk tutorial di masa yang akan datang. Jika Anda ada pertanyaan atau saran topik, silakan kirimkan di bawah ini. Anda juga bisa menghubungi saya di Twitter secara langsung @reifman.

Apakah Active Record itu?

Controller model view Yii adalah salah satu kunci keunggulannya. Active Records menyediakan solusi berorientasi objek untuk mengerjakan database Anda, yang terintegrasi erat dengan model-model Yii. Menurut Wikipedia, istilah umum Active Record "dicetuskan oleh Martin Fowler di bukunya yang terbit tahun 2003 Patterns of Enterprise Application Architecture."

Dokumentasi Yii secara ringkas menjelaskan tentang hal tersebut.

Kelas Active Record diasosiasikan dengan tabel database, suatu contoh Active Record berhubungan ke suatu baris di tabel tersebut, dan atribut Active Record merepresentasikan nilai kolom tertentu di baris tersebut. Alih-alih menuliskan pernyataan raw SQL, Anda akan mengakses atribut Active Record dan memanggil metode Active Records untuk mengakses dan memanipulasi data yang disimpan di tabel database.

Integrasi pemolaan Active Record ke dalam Yii adalah kekuatan kerangka kerja ini, tetapi juga umum bagi banyak kerangka kerja lainnya seperti Ruby pada Rails.

Abstraksi dari model ke tabel database ini memungkinkan kerangka kerjanya untuk melakukan angkat berat keamanan di mana saja, misalnya menguraikan query injeksi SQL.

Dukungan Active Record Yii juga menyediakan portabilitas pada sejumlah database. Anda juga bisa berpindah database tanpa harus mengubah banyak kode:

  • MySQL 4.1 atau yang lebih baru
  • PostgreSQL 7.3 atau yang lebih baru
  • SQLite 2 dan 3
  • Microsoft SQL Server 2008 atau yang lebih baru
  • CUBRID 9.3 atau yang lebih baru
  • Oracle
  • Sphinx: melalui yii\sphinx\ActiveRecord, membutuhkan ekstensi yii2-sphinx.
  • ElasticSearch: melalui yii\elasticsearch\ActiveRecord, membutuhkan ekstensi yii2-elasticsearch.

Dan database NoSQL berikut:

Mempelajari Dasar-Dasarnya

Di episode sebelumnya, Bagaimana Memprogram dengan Yii2: Bekerja dengan Database dan Active Record, saya membahas panduann tentang membuat database Anda, bagaimana Yii terhubung dengannya untuk tiap sesi, menggunakan migrasi untuk membuat tabel database, dan menggunakan Gii (generator kode Yii yang bermanfaat) untuk membuat kode model default. Jika Anda masih belum akrab dengan berbagai istilah tadi, silakan mempelajari episode tersebut.

Di episode kali ini, saya akan lebih berfokus pada daya ungkit Active Record dalam kode Anda.

Mendeklarasikan Kelas Active Record dalam suatu Model

Pertama, izinkan saya meninjau ulang bagaimana transformasi model Yii untuk daya ungkit Active Record. Saya akan menggunakan suatu model contoh yang saya buat di seri Membangun Startup Anda. Seri tersebut membimbing Anda untuk belajar bagaimana saya membangun startup saya, Meeting Planner, di Yii2.

Akan saya gunakan sebagai contoh model sederhana yang saya buat, yang diberi nama Launch, yang memungkinkan pengunjung beranda website memberikan alamat emailnya jika mereka ingin diberitahu kapan suatu produk keluar dari pratinjau dan sepenuhnya dirilis.

Yii2 Programming Active Record - Example of Home Page Launch Email Gathering

Dengan menggunakan Active Record dengan model yang cukup sederhana; perhatikan class Launch extends \yii\db\ActiveRecord:

Itu saja.

Membangun Query

Mari kita lihat sejumlah query umum Active Record.

Record Individu

Jika Anda punya ID record, seringkali ini berasal dari parameter kueri dari suatu controller, mudah saja menemukan record yang Anda inginkan:

Ini identik dengan:

Anda juga bisa memperluas array ->where dengan lebih banyak field atau kondisi boolean:

Banyak Record

Berikut adalah contoh menemukan semua record yang sesuai dengan status tertentu yang disortir dengan $id:

->all(); menemukan semua record, bukan satu saja. Variabel $people dikembalikan sebagai sekumpulan objek model. Sedangkan jika tidak ada syarat yang ditetapkan, Anda bisa mengakses semua record dengan ->findAll();

Mengembalikan Sekumpulan Data

Penggunanan indexBy akan mengembalikan sekumpulan item yang diindeks dengan idnya.

Di lain sisi, Anda bisa mengembalikan array yang asosiatif dengan  ->asArray()

Catatan: Dokumentasi Yii menyebutkan, "Meskipun metode ini menghemat  memori dan meningkatkan performa, ini lebih dekat dengan menurunkan lapisan abstraksi DB dan Anda akan kehilangan kebanyakan fitur Active Records."

Menghitung Record

Anda juga bisa mengembalikan count dari suatu query.

Saya banyak melakukan perhitungan di Meeting Planner untuk statistiknya, sebagai contoh, pelajari lebih lanjut di episode Dasbor kami:

Mengakses Data

Begitu Anda selesai kueri data, misalnya suatu model individu, mudah saja mengakses data sebagai suatu objek model:

Saya sering memroses array dengan cara ini:

Penugasan Masif

Anda juga bisa dengan cepat menugaskan suatu array ke suatu model record melalui ActiveRecord:

Ini sering digunakan untuk mengisi model data setelah pengajuan suatu form:

Atau Anda juga bisa menggunakan ->load() untuk ini:

Generator kode perancah Gii milik Yii sangat bagus dalam menghasilkan model-model yang menggunakan ActiveRecord yang melakukan banyak dari hal ini untuk Anda, misalnya model, controller, form, view, dsb.

Menyimpan Data

Sebagaimana Anda bisa lihat di atas, menyimpan data dengan Active Record juga mudah dilakukan. Dalam contoh dari dokumentasi Yii ini, suatu record baru dibuat dan disimpan—lalu suatu record dimuat dengan id, dan pembaruannya disimpan:

Menghapus Record

Menghapus record bahkan lebih mudah lagi:

Memperbarui Counter

Yii juga menawarkan kenaikan counter yang mudah. Katakan saja seorang pengguna menjadwalkan rapat lainnya, dan saya melacak berapa banyak itu di tabel pengguna:

Relasi

Menghubungkan beberapa tabel lintas indeks adalah salah satu kemampuan terbaik Active Record. Misalnya di Meeting Planner, tiap pertemuan mungkin memiliki 0 MeetingPlaces atau lebih. Model Meeting.php mendefinisikan ActiveQuery yang berhubungan untuk hal ini:

Lalu, saya bisa mengakses semua tempat pertemuan dengan property $meetingplaces. Di bawah ini, saya memuat suatu pertemuan dan mengiterasi semua meetingPlacesnya dengan cukup mudah seakan ada array sub-objek yang built--in.

Tentu saja ini bergantung pada pembuatan kunci asing ketika Anda membuat tabel di dalam migrasinya:

Apa Selanjutnya

Saya harap tutorial ini memberikan pengenalan mudah terhadap sejumlah kehebatan Active Record. Di sini juga mencakup Life Cycles, Transactions, dan Locking, yang mungkin akan saya buat tulisan tentangnya di masa yang akan datang.  Jika Anda ingin beberapa langkah lebih maju, Yii2 menawarkan dua area yang sangat bagus untuk belajar lebihh jauh dalam dokumentasinya: Yii2 Guide to Active Record dan Yii2 Active Record functional specifications. Keduanya adalah pengenalan Yii2 yang ditulis dengan baik.

Saksikan tutorial-tutorial yang akan datang di seri Pemrograman dengan Yii2 seiring kami terus menyelami aspek-aspek yang berbeda di kerangka kerja ini. Anda mungkin juga ingin mempelajari seri Membangun Startup Anda dengan PHP.

Jika Anda ingin tahu kapan tutorial Yii2 berikutnya hadir, ikuti saya @reifman di Twitter atau lihat halaman instruktur saya.

Tautan-Tautan Terkait

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.