gpt4 book ai didi

php - Phalcon:hasOne 和 belongsTo 在 1-1 关系中有什么区别?

转载 作者:搜寻专家 更新时间:2023-10-31 22:02:57 25 4
gpt4 key购买 nike

我有 2 个表(2 个模型)

User
-uid
-email
-password
-(other fields)

Profile
-uid
-name
-age
-phone
-(other fields)

他们有 1-1 的关系,我实现了如下关系:

class User extends Model
{
public function initialize()
{
$this->hasOne('uid', 'Profile', 'uid');
}
}

class Profile extends Model
{
public function initialize()
{
$this->hasOne('uid', 'User', 'uid');
}
}

这个实现对吗?我可以用 belongsTo 替换 hasOne 吗?谢谢你的帮助! :-)

最佳答案

好吧,已经有一段时间了,但我也在质疑同样的事情。总的来说,它们看起来像是定义了相同的关系,但实际上并没有,并且存在一些行为差异。

正如另一个答案中提到的,正确的关系应该是:

class User extends Model
{
public function initialize()
{
$this->hasOne('uid', 'Profile', 'uid');
}
}
class Profile extends Model
{
public function initialize()
{
$this->belongsTo('uid', 'User', 'uid');
}
}

例如,当处理相关实体时,phalcon 模型处理相关实体的 id 分配。当且仅当正确设置关系时,以下代码片段才有效:

$user = new User();
$user->profile = new Profile();
$user->save();

在这种情况下,您不需要指定 uid 值,并将它们保存为相关实体。

文档中没有太多关于此的内容。但是如果你有兴趣,你可以阅读 phalcon 的源代码。 https://github.com/phalcon/cphalcon/blob/master/phalcon/Mvc/Model.zep

关于php - Phalcon:hasOne 和 belongsTo 在 1-1 关系中有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24719783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com