CakePHP:一对一的关系

时间:2013-07-25 15:20:01

标签: php cakephp database-relations

我对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
        )
)

但这不是一对多关系吗?

例如(我用这些表来说明我的困惑):

enter image description here

enter image description here

在这种情况下,有2个配置文件属于同一个用户。这是不是意味着用户有很多个人资料?

如果“User hasOne Profile”是

,那会更有意义吗?

enter image description here

enter image description here

那么这将是“User hasOne Profile”,但是“Profile hasMany User”?

我不确定我是否正确理解这一点。

1 个答案:

答案 0 :(得分:2)

在文档的示例中,当它表示用户具有一个配置文件时,意味着用户只能拥有一个配置文件。

因此是一对一的关系。您可以选择您希望拥有外键的位置,并且他们更愿意在profile表中使用它。

你的图片错了。在你的情况下,它将是一对多。这是hasMany + belongsTo。 他们只是决定每个用户只有一个配置文件,如果您希望每个用户拥有多个配置文件,那么它将不是hasOne。那是你的决定。