Pemecahan masalah PK tipe string pada yii

Pada yii, kita biasa menggunakan gii untuk menggenerate code pada model, view, controller, modul, dan form. Nah, salah satu hal yg sering kita lakukan dengan gii adalah melakukan generate code untuk operasi CRUD. Sialnya code operasi CRUD yg di generate oleh gii tidak selalu compatible dengan berbagai kondisi. Sebagai contoh,  jika kita membuat Primary Key dengan tipe numeric(angka), kita tidak akan menghadapi msalah dengan hasil code yang di generate dari gii. Tapi bila kita menggunakan primary key bertipe string(char,varchar, dll), maka kita akan mendapat masalah pada saat melakukan operasi “views” dan operasi “admin/manage”. Kenapa, karena pada code hasil generate gii, code tersebut akan mengenali suatu nilai dari PK nya dengan cara mengkonversi nilai PK ny ke dalam integer.. Bagaimana pemecahannya?? Ya, anda tinggal mengubah code yang ada pada folder protected/controllers/”controller yang anda tuju”, lalu ubah code “public function loadModel($id)” yang awal nya seperti berikut:

$model=MBahasa::model()->findByPk((int)$id);
if($model===null)
throw new CHttpException(404,’The requested page does not exist.’);
return $model;

rubah menjadi seperti berikut:

$model=MUnitKerja::model()->findByAttributes(array(‘nama attribut PK anda’=>$id));
if($model===null)
throw new CHttpException(404,’The requested page does not exist.’);
return $model;

Selesai, selamat mencoba…😀

2 Responses to Pemecahan masalah PK tipe string pada yii

  1. atau hapus aja gan (int) nya, jadi:

    $model=MBahasa::model()->findByPk($id);
    ane udah coba, berhasil juga gan🙂

  2. sabitzhabit says:

    oh iya ya yos. Waktu itu saya juga uda nglakuin kayak gtu gan, tapi ga tw kenapa error trus. Tapi sekarang punyaku juga berhasil… Maka ny aku akalin dg make attribut nya aja..

    Hoho, brrti code ku yg wktu itu salah..
    Thanks share nya yos..

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: