posting terbaru
Ada seorang teman yang bertanya (menjawab mas imamiscool di Posting saya yang lalu)
mau tanya:
database ku: :dst
users: user_id, user_name
posts: post_id, post_content
user_post: user_id, post_id
MODEL
UserModel
PostModel
CONTROLLER
User
Post
VIEW
User
Post
—
gimana cara nampilin content2 (post_content) pada halaman User, sedangkan pada Model User table yang digunakan adalah `users`,
I mean: gimana nerapin INNER JOIN di cakePHP-MVC schema?
fungsi itu ditaro dimana? Post, User, ato (ngga mungkin) UserPost [?]
Humm … oke deh mas imam. Saya coba bantu ya. Kalau melihat pertanyaan beliau, relasi antara tabel user dan post ini adalah relasi many to many (n to n), yang artinya, mau tidak mau antara tabel user dan tabel post harus dibuat sebuah metode normalisasi (yap, dan sepertinya mas imam sudah melakukannya dengan membuat tabel user_post).
CakePHP mengenal istilah asosiasi HABTM (has and belong to many), sebuah asosiasi antar model yang disamakan dengan relasi n to n pada database relasional. Untuk membuat relasi ini berjalan dengan baik, relasi HABTM haruslah didefinisikan pada dua model yang bertautan (misalkan : model User dan model Post, sedangkan tabel untuk menggabungkannya adalah posts_users). Maka, kita definisikan saja pada model User :
var $hasAndBelongsToMany =
array(’Post’ =>
array(’className’ => ‘Post’,
‘joinTable’ => ‘posts_users’,
‘foreignKey’ => ‘user_id’,
‘associationForeignKey’=> ‘post_id’,
‘conditions’ => ”,
‘order’ => ”,
‘limit’ => ”,
‘uniq’ => true,
‘finderQuery’ => ”,
‘deleteQuery’ => ”
)
);
dan pada model Post :
var $hasAndBelongsToMany = array(’User’ =>
array(’className’ => ‘User’,
‘joinTable’ => ‘posts_users’,
‘foreignKey’ => ‘post_id’,
‘associationForeignKey’=> ‘user_id’,
‘conditions’ => ”,
‘order’ => ”,
‘limit’ => ”,
‘uniq’ => true,
‘finderQuery’ => ”,
‘deleteQuery’ => ”
)
);
So, kedua model sudah terjalin (dan kalau memang ini yang dimaksud dengan “inner join” – nya, maka CakePHP sudah melakukannya secara otomatis). Untuk menggunakannya, tinggal dikasi perintah aja di controller aja (misal di controller Users) :
$postingan = $this->User->Post->findAll();
yang hasilnya berbentuk array. Untuk melibatkan berbagai macam klausa / condition SQL, silahkan lihat di API nya CakePHP, tentang parameter-parameter (berupa condition, order, limitation, dll) pada fungsi findAll, findById, dan sebagainya.
Dan untuk mengecek hasil yang berupa array tadi, gunakan saja fungsi print_r
print_r($postingan);
Untuk lebih jelasnya, mas imam bisa melihat artikel ini :
1. HABTM association in bakery
2. HABTM tutorial in flipflops.org
Happy coding ….
Memahami Bind dan Unbind
2 CommentsPosted on July 19, 2007
Filed Under Diary, Eksplorasi, General Thought |
CakePHP mengenal metode Bind dan Unbind. Dengan metode ini, seorang programmer akan dengan sangat mudah menghubungkan sebuah model dengan model yang lain, dalam waktu singkat, dengan model asosiasi yang disediakan oleh CakePHP (ada empat model asosiasi : hasOne, hasMany, belongsTo, hasAndBelongsToMany). Model dasar dari kedua fungsi ini adalah sebagai berikut :
$this->Model->bindModel(
array(’associationName’ => array(
‘associatedModelClassName’ => array(
// normal association keys go here…
)
)
)
);
Bind digunakan untuk membuat asosiasi baru, sebagaimana contoh di atas. Bind ini hanya akan berjalan untuk satu kali definisi saja, dan untuk menggunakannya kembali, programmer harus mendefinisikan ulang asosiasi yang akan dibuat antar dua model yang sebelumnya sama sekali tidak berhubungan.
Sedangkan unbind sebagai berikut :
$this->Leader->unbindModel(array(’hasMany’ => array(’Follower’)));
Unbind akan menghilangkan (untuk sementara) asosiasi yang sudah didefinisikan antar dua model. Sebagaimana bind, unbind hanya berlaku untuk satu kali pendefinisian saja.
Oke, kita masuk contoh kasus. Alkisah, ada tiga buah model dengan skema relasi antar tabel sebagai berikut :
1. Tabel Practicumnames, memiliki model Practicumname. Tabel ini berisi nama-nama praktikum yang ada di sebuah laboratorium. Tabel ini memiliki hubungan 1 to N (one to many) dengan tabel Practicumschedules. Artinya, satu mata praktikum bisa jadi memiliki jadwal lebih dari satu.
2. Tabel Practicumschedules, memiliki model Practicumschedule. Tabel ini berisi jadwal-jadwal praktikum untuk nama praktikum yang bersesuaian. Tabel ini mempunyai relasi N to 1 (many to one) dengan tabel Practicumnames serta relasi N to N (many to many) dengan tabel Practicians.
3. Tabel Practicians, memiliki model Practician. Tabel ini berisi nama-nama praktikan yang terdaftar dan memiliki relasi N to N (many to many) dengan tabel Practicumschedules.

Pertanyaannya : Bagaimana caranya, jika kita ingin mengambil beberapa record yang ada hubungannya, antara practician dengan practicumnames ? Misalkan, kita ingin tahu praktikum apa saja yang diikuti oleh seorang praktikan yang terdaftar.
Jawaban : gunakan Bind. Lihat contoh di bawah ini,
$this->Practician->bindModel(
array(’hasAndBelongsToMany’ => array(
‘Practicumname’ => array(
‘className’ => ‘Practicumname’,
)
)
)
);
Clear ! Oke, kita bisa langsung membuat sebuah asosiasi antar model Practician dengan Practicumname dan langsung saja kita mengeksekusi fungsi-fungsi
Forum Diskusi Yang Gak Ngirim Email Aktivasi
No CommentsPosted on July 10, 2007
Filed Under Berita, Diary |
Beberapa waktu yang lalu, saya membuka Mail Manager saya dan melihat banyak komplain dari temen-temen user forum (yang sudah mendaftar di forum diskusi IdCake) tidak menerima email aktivasi dari situs ini. Hmm, saya pikir waktu itu pasti ada yang keliru dengan berbagai macam script konfigurasi yang ada di forumnya. Atau barangkali ada setting yang salah
Jawaban itu berhasil saya temukan. Ternyata memang hosting situs IdCake mematikan fungsi PHP Sendmail dan SMTP, sehingga semua aksi yang ada hubungannya dengan “mengirim email dari situs ini” tidak bisa terpenuhi. Saat ini, saya sedang mengusahakan agar fungsi sendmail bisa aktif, dan melalui artikel ini saya mohon maaf kepada teman-tema yang kemarin sudah ndaftar (hehehe, maap banget mas. Mungkin perlu ndaftar lagi nih, kalo dah aktif sendmail nya. Sori banget ….).
Insya Allah dalam waktu dekat, jika sudah ada kepastian akan saya buka kembali forumnya. Buat temen-temen yang kepingin dapet user di blog-nya, kirim aja email ke
Sekali lagi mohon maaf ….
CakePHP Indonesia adalah sebuah blog tentang framework CakePHP berbahasa Indonesia yang membahas tentang artikel, tutorial, berita dan tips yang terkait dengan CakePHP.
|
menu utama
kategori
- Bakery (1)
- Berita (11)
- Contributors (1)
- Diary (8)
- Eksplorasi (6)
- General Thought (7)
- Konsultasi (2)
- Tips dan Trik (8)
- Tutorial (9)
- Uncategorized (1)
- video (2)
CakePHP Indonesia adalah sebuah blog tentang