Mengenal Hubungan "Has One" dan "Belongs To"

|

Kali ini saya akan melanjutkan tulisan saya seputar konsep dasar yang harus diketahui ketika mempelajari Cake PHP. Dalam konsep database kita tentunya telah mengenal beberapa model hubungan antar table, yaitu "one to one", "one to many", dan "many to many". Ketika kita akan membangun sebuah web application dengan PHP, maka kita perlu membawa bentuk hubungan antar table tersebut ke dalam bentuk hubungan yang sesuai degan konvensi yang ditetapkan oleh Cake PHP.
Dalam tulusan kali ini saya akan membahas bentuk hubungan yang paling sederhana, yaitu bentuk hubungan "one to one". Cake PHP mengenal hubngan "one to one" sebagai "has one" dan "belongs to".
Misalkan saja dalam kasus kali ini saya memiliki dua buah table yang saling berelasi, yaitu table students dan table profiles. Sekadar mengingatkan kembali bahwa dalam Cake PHP terdapat konvensi penamaan table di mana sebuah table harus diberi nama dalam bentuk plural. Setiap table juga harus diberi primary key dengan nama id dan bersifat auto increment.
Berikut ini adalah table yang dibuat:

CREATE TABLE students (
id INT(10) AUTO_INCREMENT PRIMARY KEY,
nim VARCHAR(8),
nama VARCHAR(25));

CREATE TABLE profiles (
id INT(10) AUTO_INCREMENT PRIMARY KEY,
student_id INT(10),
tanggal_lahir DATE,
alamat VARCHAR(50),
telp VARCHAR(15));

Table profiles akan memiliki sebuah field yang akan berperan sebagai foreign key dan akan berreferensi dengan primary key dari table students. Dalam Cake PHP juga terdapat konvensi penamaan nama field yang berperan sebagai foreign key. Setiap field yang berperan sebagai foreign key harus diberi nama dengan awalan nama table yang akan direferensikan (dituliskan dalam bentuk singular) dan diikuti dengan _id. Sebagai contoh pada table profiles terdapat sebuah foreign key dengan nama student_id yang digunakan untuk bereferensi dengan table students.
Dalam kasus ini hubungan antara kedua table tersebut adalah "one to one", di mana seorang student akan memiliki sebuah profile. Dan sebuah profile hanya akan dimiliki oleh seorang student. Bentuk hubungan seperti ini bila diterjemahkan dalam konvensi Cake PHP, maka akan berbunyi seperti ini: student "Has One" profile, dan profile "Belongs To" student.
Langkah selanjutnya adalah membuat model untuk setiap table yang ada. Sesuai dengan konsep MVC yang sebelumnya pernah saya sampaikan bahwa dalam aplikasi yang menerapkan konsep MVC, sebuah controller tidak diperbolehkan untuk melakukan akses langsung ke dalam database, oleh karenanya kita harus membuat model untuk setiap table.
Dalam Cake PHP, kita dapat membuat model dalam directory ./cake/models/
Sebuah model akan diberi nama sesuai dengan nama table yang akan dimodelkan, hanya saja penamaan model menggunakan bentuk singular. Dalam kasus kali ini berarti kita akan membuat dua buah model, yaitu student.php dan profile.php. Sebuah model akan berisi sebuah class dengan nama sesuai dengan nama table yang dimodelkan dan dituliskan dalam bentuk singular. Dan setiap class model tersebut akan melakukan inheritance / extends pada class AppModel.
Untuk lebih jelasnya bisa mempelajari source code dari kedua model tersebut:

students.php


profile.php


Tahapan sederhana berikutnya adalah membuat controller. Seperti dijelaskan pada tulisan saya sebelumnya, sebuah controller dibuat pada directory ./cake/controllers/
Berikut ini adalah source code dari controller yang dibuat. Bila Anda masih mengalami kebingungan dalam membuat controller pada Cake PHP, silakan mempelajari tulisan saya sebelumnya.

students_controller.php


profiles_controller.php


Hasil akhirnya bisa Ada akses dari http://localhost/cake/students atau http://localhost/cake/profiles
Sangat sederhana sekali :)

0 comments: