CakePHP : Mengakses Sebuah Model Pada Controller Yang Berbeda

Dalam CakePHP biasanya sebuah model – view – controller pasti saling berhubungan dan mempunyai nama yang mirip.

Contohnya sebuah tabel users mempunyai model yang bernama user, controller bernama users_controller, dan folder view yang bernama user.

Tapi permasalahannya adalah terkadang kita harus mengakses model lain tetapi controller tersebut tidak mempunyai relasi sama sekali dengan model / tabel ini.

Sebagai contoh lagi misalnya kita ingin pada users_controller dapat melakukan query pada tabel items, padahal tabel users sama sekali tidak punya relasi dengan tabel items.

Ada beberapa cara yang dapat dilakukan untuk mensolusikan hal tersebut :

  1. Pada users_controller kita dapat menambahkan variable baru yaitu $uses = array(‘User’,‘Item’); dengan melakukan hal itu maka kita dapat melakukan query seperti biasa ( $this->Item->find(‘all’); )

  2. Satu cara lagi lebih praktis dilakukan dan bisa lebih fleksibel dilakukan yaitu dengan menggunakan ClassRegistry. Jadi tanpa harus menambahkan variable kita cukup melakukan pencarian ( contoh : $items = ClassRegistry::init(‘Item’)–>find(‘all’); ).

Itulah 2 cara yang dapat dilakukan jika anda ingin melakukan akses model yang sama sekali tidak ada relasi, tetapi jika anda terpaksa melakukan hal ini mungkin ada yang salah terjadi pada rancangan database anda karena rancangan database yang baik tidak seharusnya dapat melakukan query untuk database yang tidak saling berkaitan.

Tapi lebih baik berjaga-jaga siapa tahu anda mendapatkan project dimana anda harus menggunakan rancangan database yang sudah ada ( dan ternyata rancangan database tersebut kacau ). Ibarat kata pepatah sedia payung sebelum hujan.

Comments