Yii Framework Forum: Relasi HAS_ONE blum jalan - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Relasi HAS_ONE blum jalan Rate Topic: -----

#1 User is offline   bhoo-day 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 14
  • Joined: 17-June 10

Posted 20 June 2010 - 07:42 AM

halo2,

ak mau nanya tentang relasi HAS_ONE. Ak punya dua tabel yaitu User dan Profile dengan schema

User
=====
id_user
nama_user
id_profile


Profile
=========
id
nama_profile


User hanya boleh memiliki satu profile dan satu profile bisa dimiliki oleh banyak user.

User memiliki foreign key id_profile yang mengacu ke field id dari tabel Profile. Maka di model AR-nya ak bikin seperti dibawah ini

User.php
return array(
    'profile' => array(self::HAS_ONE, 'Profile', 'id'),
);


Profile.php
return array(
    'users' => array(self::BELONGS_TO, 'User', 'id_profile'),
);


Lalu ak mencoba untuk melakukan test dengan membuat query di controller dibawah ini


$userModel = User::model()->findByPk(4);
echo $userModel->id_profile . ' ters ';
echo $userModel->profile->nama_profile;


untuk echo yg pertama keluar dan hasilnya benar tapi yg kedua untuk dapetin nama profile ga keluar hasilnya. Kira2 salah dimana ya?

Terima kasih atas bantuannya ^^
0

#2 User is offline   nasrul 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 98
  • Joined: 14-April 09
  • Location:Sorowako - Indonesia

Posted 20 June 2010 - 03:26 PM

prediksi: fk yang digunakan pada relasu User->Profile harusnya fk dari User, yakni id_profile

User.php


return array(

'profile' => array(self::HAS_ONE, 'Profile', 'id_profile'),


);





0

#3 User is offline   bhoo-day 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 14
  • Joined: 17-June 10

Posted 21 June 2010 - 09:49 AM

klo ak ganti menjadi id_profile yg muncul malah error mas nasrul

CDbCommand gagal menjalankan pernyataan SQL: SQLSTATE[HY000]: General error: 10007 Invalid column name 'id_profile'. [10007] (severity 5) [(null)]
0

#4 User is offline   junxiong 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 541
  • Joined: 21-June 10

Posted 21 June 2010 - 11:22 AM

View Postbhoo-day, on 21 June 2010 - 09:49 AM, said:

klo ak ganti menjadi id_profile yg muncul malah error mas nasrul

CDbCommand gagal menjalankan pernyataan SQL: SQLSTATE[HY000]: General error: 10007 Invalid column name 'id_profile'. [10007] (severity 5) [(null)]


Aneh kok bisa error, sesuai tabel yang dikasih bro bhoo harusnya benar...
kecuali field id_profile hilang atau salah ketik?? :P
“The most likely way for the world to be destroyed, most experts argue, is by accident. That’s where we come in; we’re computer professionals. We cause accidents.” - Nathaniel Borenstein

Yii Playground : Collaborative demo apps. You can join to improve it too!
My Team's Blog: In Indonesian.
0

#5 User is offline   nasrul 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 98
  • Joined: 14-April 09
  • Location:Sorowako - Indonesia

Posted 21 June 2010 - 11:04 PM

View Postbhoo-day, on 21 June 2010 - 09:49 AM, said:

klo ak ganti menjadi id_profile yg muncul malah error mas nasrul

CDbCommand gagal menjalankan pernyataan SQL: SQLSTATE[HY000]: General error: 10007 Invalid column name 'id_profile'. [10007] (severity 5) [(null)]

sorry ke soal:


Quote

User hanya boleh memiliki satu profile dan satu profile bisa dimiliki oleh banyak user.


jadi di sini yang unik adalah profilenya yah?? sehingga menurut ana relasinya menjadi User BELONGS_TO Profile

user.php

return array(
    'profile' => array(self::BELONGS_TO, 'Profile', 'id_profile'),
);


sedangkan Profile-->User relasinya adalah Profile HAS_MANY User

Profile.php

return array(
    'users' => array(self::HAS_MANY, 'User', 'id_profile'),
);


sedangkan HAS_ONE sebenarnya adalah relasi HAS_MANY namun paling banyak memiliki hanya satu. lihat http://www.yiiframew...ng-relationship

wallaahu ta'ala a'laam coba deh semoga membantu :lol:
0

#6 User is offline   bhoo-day 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 14
  • Joined: 17-June 10

Posted 22 June 2010 - 01:25 AM

Hoho, iya ya...bisa juga dibalik seperti itu ya. Coba nanti ak balik logika relationship-nya klo udah di rumah.
Mungkin gara2 dari kalimat bahasa indo-nya ak terjemahin jadi kata2 relationship has one dan belongs to

User hanya boleh memiliki satu profile dan satu profile bisa dimiliki oleh banyak user. 


diterjemahin jadi

User HAS ONE profile dan profile BELONGS TO user


Berarti klo yg HAS_ONE itu artinya si profile hanya boleh dimiliki oleh tepat satu user ya.

Ok deh..nanti tak coba dlu. Mudah2an bisa.

Thx bro Nasrul. Mohon bimbingannya, masih newbie. :P
0

#7 User is offline   fastcrash 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 245
  • Joined: 10-March 10
  • Location:South Jakarta

Posted 22 June 2010 - 03:06 AM

Quote

Mungkin gara2 dari kalimat bahasa indo-nya ak terjemahin jadi kata2 relationship has one dan belongs to


hmm.. mungkin cara bacanya bisa juga dari kanan -> kekiri -> trus ke tengah.

exm (Dibaca dari model Profile):
'users' => array(self::HAS_MANY, 'User', 'id_profile'),

id_profile(paling kanan) -> HAS_MANY(paling kiri) -> User(tengah)


brarti :
id_profile punya banyak di table user.

:mellow:
0

#8 User is offline   nasrul 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 98
  • Joined: 14-April 09
  • Location:Sorowako - Indonesia

Posted 22 June 2010 - 04:27 AM

hanya meluruskan:

View Postbhoo-day, on 22 June 2010 - 01:25 AM, said:

User HAS ONE profile dan profile BELONGS TO user


udah mirip banget dengan contoh http://www.yiiframew...ng-relationship

sehingga struktur tabel harusnya:
User		    Profile
=====		    =========
id_user (PK) 1----1 id_user(PK,FK)
nama_user	    nama_profile


dan relationnya menjadi:
User.php
User HAS_ONE profile
'profile'=>array(self::HAS_ONE,'profile','id_profile'),


Profile.php
a Profile BELONGS_TO User
'user'=>array(self::BELONGS_TO,'user','id_profile'),


Deklarasi relational di atas "tidak perlu" dilakukan di kedua model, cukup pada model dari mana kita akan memanggil record

Adapun jika kita mekatakan

Quote

...satu profile bisa dimiliki oleh banyak user


atau dengan kata lain satu profile dapat digunakan oleh banyak user, maka struktur tabelnya mas @bhoo-day sudah pas :lol:

wallaahu ta'alaa a'laam

NB: Silahkan kunjungi http://www.indotwit.com/yiindo jangan lupa follow nasrulhamid yah! :lol:
1

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users