gpt4 book ai didi

laravel - 如果同时指定了两个键,Eloquent hasOne 与belongsTo 会退化为相同的函数吗?

转载 作者:行者123 更新时间:2023-12-01 14:12:20 26 4
gpt4 key购买 nike

对于一对一关系的情况,如果我在方法调用中完全指定key,hasOne有区别吗?和 belongsTo关系?或者,如果我使用 hasOne,换一种方式问在关系的双方,结果会一样吗?

最佳答案

是的,它在某些情况下可以指定键并使关系起作用。在某些情况下,我的意思主要是 检索结果。下面是一个例子:

D B

users                profiles
----- --------
id id
etc... user_id
etc...

楷模

hasOne 使用“错误”关系两次
class User extends Eloquent {
public function profile(){
return $this->hasOne('Profile');
}
}

class Profile extends Eloquent {
public function user(){
return $this->hasOne('User', 'id', 'user_id');
}
}

查询

假设我们想从某个配置文件中获取用户
$profile = Profile::find(1);
$user = $profile->user;

这是有效的。但它并没有像它应该的那样工作。它将处理 users 的主键就像一个引用 user_id 的外键在 profiles .

虽然这可能有效,但在使用更复杂的关系方法时会遇到麻烦。

例如 associate :
$user = User::find(1);
$profile = Profile::find(2);
$profile->user()->associate($user);
$profile->save();

该调用将抛出异常,因为 HasOne没有方法 associate . ( BelongsTo 有)

结论

belongsTohasOne在某些情况下可能表现相似。他们显然不是。与关系的更复杂的交互将不起作用,从语义的角度来看这是无稽之谈。

关于laravel - 如果同时指定了两个键,Eloquent hasOne 与belongsTo 会退化为相同的函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26150925/

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