2013-07-25 95 views
2

我對CakePHP如何處理數據庫關係有些困惑。CakePHP:一對一關係

對於hasOne關係,根據documentation

「用戶hasOne檔案」

User hasOne Profile - >profiles.user_id

Array 
(
    [User] => Array 
     (
      [id] => 121 
      [name] => Gwoo the Kungwoo 
      [created] => 2007-05-01 10:31:01 
     ) 
    [Profile] => Array 
     (
      [id] => 12 
      [user_id] => 121 
      [skill] => Baking Cakes 
      [created] => 2007-05-01 10:31:01 
     ) 
) 

但不是這一個一對多的關係?

例如(I由這些表,說明我的混亂):

enter image description here

enter image description here

在這種情況下,然後存在屬於相同的用戶簡檔2。這是不是意味着用戶擁有許多配置文件?

會更有意義,如果 「用戶hasOne檔案」 是

enter image description here

enter image description here

所以那麼這將是 「用戶hasOne檔案」,而是 「個人資料的hasMany用戶」?

我不知道我是否正確理解這一點。

+0

從哪裏得到這些表格圖像? – Alvaro

+0

我自己做的,只是爲了說明我的困惑。 – Timber

+0

我回答了你。 – Alvaro

回答

1

在文檔中的示例中,當其說用戶具有一個配置文件時,這意味着用戶只能擁有一個配置文件。

因此是一對一的關係。您可以選擇您希望擁有外鍵的位置,並且他們傾向於在profile表中使用它。

您的圖片是錯誤的。在你的情況下,這將是一對多。這是一個hasMany + belongsTo。 他們只是決定每個用戶只有一個配置文件,如果你想爲每個用戶配置多個配置文件,那麼它不會是hasOne。這是你的決定。

+0

好吧,如果我正確地理解了這個,那麼放在'profile'表上的外部是唯一的呢? – Timber

+0

是的,就是這樣。按設計。 – Alvaro

+0

啊好吧,我現在覺得很蠢......所以,如果你在用戶模型中放置'public $ hasOne ='Profile';'這將使外鍵獨一無二?否則,如果你把'$ hasMany'那麼它會允許重複的條目。它是否正確? – Timber