From 21a0a5ef7935a56c9d9d95562394bc61b7bcebf1 Mon Sep 17 00:00:00 2001 From: kabayan <> Date: Wed, 24 Oct 2007 23:02:15 +0000 Subject: Indonesian: Synchronized with english version --- .../protected/pages/Database/id/ActiveRecord.page | 84 ++++++++++++++++------ 1 file changed, 63 insertions(+), 21 deletions(-) (limited to 'demos/quickstart') diff --git a/demos/quickstart/protected/pages/Database/id/ActiveRecord.page b/demos/quickstart/protected/pages/Database/id/ActiveRecord.page index 7273640d..a779a1da 100644 --- a/demos/quickstart/protected/pages/Database/id/ActiveRecord.page +++ b/demos/quickstart/protected/pages/Database/id/ActiveRecord.page @@ -5,7 +5,7 @@
Rekaman Aktif adalah obyek yang melapisi baris dalam tabel atau view database, melindungi akses database dan menambahkan logika domain pada data tersebut. Dasar dari Rekaman Aktif adalah kelas bisnis, sebagai contoh, kelas - Products, yang hampir menyamai struktur rekaman dari tabel database + Products, yang hampir menyamai struktur rekaman dari tabel database dibawahnya. Setiap Rekaman Aktif akan bertanggung jawab atas penyimpanan dan pengambilan data ke dan dari database.
-Implementasi Prado terhadap Rekaman Aktif tida memelihara identitas referensial. Setiap obyek diperoleh menggunakan Rekaman Aktif pada data dalam database. Sebagai contoh, jika anda meminta kustomer tertentu dan mendapaptkan kembali obyek Customer, kali berikutnya anda meminta kustomer itu anda akan kembali mendapatkan turunan lain dari obyek Customer. Ini berarti bahwa perbandingan tepat (misalnya menggunakan ===) akan mengembalikan false, sementara perbandingan bebas (misalnya menggunakan ==) akan mengembalikan true jika nilai obyek sama menurut perbandingan bebas. +Implementasi Prado terhadap Rekaman Aktif tidak memelihara identitas referensial. Setiap obyek diperoleh menggunakan Rekaman Aktif pada data dalam database. Sebagai contoh, jika anda meminta kustomer tertentu dan mendapatkan kembali obyek Customer, kali berikutnya anda meminta kustomer itu, anda akan kembali mendapatkan turunan lain dari obyek Customer. Ini berarti bahwa perbandingan tepat (misalnya menggunakan ===) akan mengembalikan false, sementara perbandingan bebas (misalnya menggunakan ==) akan mengembalikan true jika nilai obyek sama menurut perbandingan bebas.
Implikasi desain ini terkait dengan pertanyaan berikut. @@ -128,7 +128,7 @@ class UserRecord extends TActiveRecord { }
Lebih jelas mengenai TComponent dapat ditemukan dalam Dokumentasi komponen. -Nantinya kita harus dapat menggunakan pengambil/penentu guna membolehkan pengambilan lazy dari obyek yang berhubungan. +Nantinya kita harus dapat menggunakan pengambil/penyetel guna membolehkan pengambilan malas atas obyek yang berhubungan.
Batasan kunci asing tabel Players dipakai untuk menentukan nama kunci tabel Teams terkait. Ini dikerjakan secara otomatis, ditangani dalam Rekaman Aktif dengan memeriksa definisi tabel Players dan Teams.
Hubungan "has many" tidak diambil secara otomatis ketika anda menggunakan salah satu metode finder Rekaman Aktif. @@ -595,6 +620,11 @@ Query kedua dipakai untuk mengambil obyek PlayerRecord terkait. Penggunaan dua query mirip dengan query tunggal menggunakan Left-Outer join dengan eksepsi bahwa hasil null pada tabel kanan tidak dikembalikan. Konsekuensi pemakaian dua tau lebih query adalah kondisi agregat dan join tidak layak menggunakan Rekaman Aktif. Untuk query di luar lingkup Rekaman Aktif, Pemeta Data SqlMap diapat dupertimbangkan.
Hubungan "has many" dalam bagian di atas mendefinisikan koleksi obyek asing. Dalam keadaan tertentu, kita mempunyai TeamRecord memiliki banyak (nol atau lebih) obyek PlayerRecord. Kita juga dapat menambah penunjuk kembali dengan menambahkan properti dalam kelas PlayerRecord yang mengaitkan kembali ke obyek TeamRecord, secara efektif membuat asosiasi dua arah. Kita katakan bahwa properti $team dalam kelas PlayerRecord belongs to obyek TeamRecord. @@ -604,9 +634,9 @@ Kode berikut mendefinisikan kelas PlayerRecord lengkap dengan 3 hubunga class PlayerRecord extends TActiveRecord { const TABLE='Players'; - public $player_id; - public $age; - public $team_name; + public $player_id; // deklarasi ini tidak diperlukan lagi sejak v3.1.2 + public $age; // deklarasi ini tidak diperlukan lagi sejak v3.1.2 + public $team_name; // deklarasi ini tidak diperlukan lagi sejak v3.1.2 public $team; public $skills=array(); @@ -656,7 +686,7 @@ class ProfileRecord extends TActiveRecord public $player_id; public $salary; - public $player; + public $player; // deklarasi ini tidak diperlukan lagi sejak v3.1.2 public static $RELATIONS=array ( @@ -695,8 +725,8 @@ class Category extends TActiveRecord public $category_name; public $parent_cat_id; - public $parent_category; - public $child_categories=array(); + public $parent_category; // deklarasi ini tidak diperlukan lagi sejak v3.1.2 + public $child_categories=array(); // deklarasi ini tidak diperlukan lagi sejak v3.1.2 public static $RELATIONS=array ( @@ -722,7 +752,7 @@ Anggap pengambilan koleksi SkillRecord untuk daftar obyek PlayerRec Dalam hal ini, anda melakukan query dalam dua tahap. Tahap pertama meng-query tabel Players untuk mencari seluruh baris dari pemain yang anda inginkan. Tahap kedua mencari obyek SkillRecord ID pemain terkait untuk setiap barisnya dalam tabel asosiasi Player_Skills menggunakan sebuah inner join.
-Desain Rekaman Aktif Prado mengimplementasikan dua tahap pendekatan. Untuk hubungan entitas Players-Skills M-N (banyak-ke-banyak), kita perlu mendefinisikan sebuah hubungan has many dalam kelas PlayerRecord dan sebagai tambahan mendefinisikan hubungan has many dalam kelas SkillRecord juga. +
Desain Rekaman Aktif Prado mengimplementasikan dua tahap pendekatan. Untuk hubungan entitas Players-Skills M-N (many-to-many), kita perlu mendefinisikan sebuah hubungan has many dalam kelas PlayerRecord dan sebagai tambahan mendefinisikan hubungan has many dalam kelas SkillRecord juga. Kode contoh berikut mendefinisikan kelas SkillRecord lengkap dengan hubungan banyak-ke-banyak dengan kelas PlayerRecord. (Lihat definisi kelas PlayerRecord di atas untuk mengaitkan hubungan banyak-ke-banyak dengan kelas SkillRecord.)
@@ -733,7 +763,7 @@ class SkillRecord extends TActiveRecord public $skill_id; public $name; - public $players=array(); + public $players=array(); // deklarasi ini tidak diperlukan lagi sejak v3.1.2 public static $RELATIONS=array ( @@ -752,6 +782,11 @@ Properti statis $RELATIONS dari SkillRecord mendefinisikan bahwa proper Dalam array(self::MANY_TO_MANY, 'PlayerRecord', 'Player_Skills'), elemen pertama mendefinisikan tipe hubungan, dalam hal ini self::HAS_MANY, elemen kedua adalah string 'PlayerRecord' yang terkait ke nama kelas dari kelas PlayerRecord, dan elemen ketiga adalah nama dari nama tabel asosiasi. + +Daftar obyek pemain dengan koleksi obyek skil terkait bisa diambil seperti berikut.
@@ -801,7 +836,7 @@ class Item extends TActiveRecord //id item asing tambahan didefinisikan dalam tabel asosiasi public $related_item_id; - public $related_items=array(); + public $related_items=array(); // deklarasi ini tidak diperlukan lagi sejak v3.1.2 public static $RELATIONS=array ( @@ -814,6 +849,7 @@ class Item extends TActiveRecord Kunci gabungan dalam tabel asing dapat ditetapkan sebagai nilai dipisahkan koma diantara kurung buka/tutup. Contohnya 'related_items.(id1,id2)'.Menggunakan metode with_xxx() akan mengambil hubungan rekaman sesuai permintaan. Mengambil rekaman terkait dengan lazy loading (yaitu, hanya obyek terkait itu saja yang diakses) bisa dicapai dengan menggunakan sebuah fitur TComponent yang menyediakan metode pengakses. Dalam keadaan tertentu, kita mendefinisikan pasangan metode pengambil dan penentu di mana metode pengambil akan mengambil hubungan secara kondisional. Contoh berikut menggambarkan bahwa PlayerRecord dapat mengambil obyek asing $skills secara kondisional.
Pertama kita perlu mengubah deklarasi $skills=array() ke properti privat $_skills (perhatikan garis bawah) dan sebaliknya setel ke null. Ini membolehkan kita untuk mendifinisikan properti skills menggunakan metode pengambil/penentu -(lihat Komponen untuk lebih jelasnya). Metode pengambil getSkills() untuk properti skills akan mengambil lambat rekaman skill terkait saat ia dipakai sebagai berikut. Catatan bahwa kita hanya melakukan pengambilan lambat ketika $player_id tidak null (ykni, ketika rekaman sudah diambil dari database ataau id player sudah disetel). +
Pertama kita perlu mengubah deklarasi $skills=array() ke properti private $_skills (perhatikan garis bawah) dan sebaliknya setel ke null. Ini membolehkan kita untuk mendefinisikan properti skills menggunakan metode pengambil/penyetel +(lihat Komponen untuk lebih jelasnya). Metode pengambil getSkills() untuk properti skills akan mengambil malas rekaman skill terkait saat ia dipakai sebagai berikut. Catatan bahwa kita hanya melakukan pengambilan malas ketika $player_id tidak null (yakni, ketika rekaman sudah diambil dari database ataau id player sudah disetel).
-Dengan pemetaan kolom di atas, kita menambahkan alamat first_name menggunakan $userRecord->firstName +Dengan pemetaan kolom di atas, kita mengalamatkan first_name menggunakan $userRecord->firstName daripada $userRecord->first_name. Ini membantu pemisahan dari logika dan model.
-