Laravel 中 HasOne 和 BelongsTo 的区别

hasOnebelongsToLaravel中用于定义一对一关系的关系方法。

hasOne 表示当前模型有一个关联模型。这意味着,如果你有一个用户模型和一个资料模型,并且每个用户只有一个资料,则你可以在用户模型中使用 hasOne 方法来定义这种关系。

belongsTo 表示当前模型属于一个关联模型。这意味着,如果你有一个资料模型和一个用户模型,并且每个资料属于一个用户,则你可以在资料模型中使用 belongsTo 方法来定义这种关系。

这两种方法的使用方式类似,但是它们的意义相反。你需要根据实际情况确定使用哪种方法。
例如,如果你想在用户模型中定义一对一关系,可以使用如下代码:

class User extends Model
{
    public function profile()
    {
        return $this->hasOne(Profile::class);
    }
}

如果你想在资料模型中定义一对一关系,可以使用如下代码:

class Profile extends Model
{
    public function user()
    {
        return $this->belongsTo(User::class);
    }
}

在这两种情况下,你都可以使用 Eloquent 关系来查询关联数据。

hasOnebelongsTo 都是 Laravel Eloquent ORM 中用于定义一对一关系的关系方法,它们都是基于 Eloquent 关系的抽象。

底层实现上,hasOnebelongsTo 并没有太大的区别。它们都是通过定义关联模型的外键和当前模型的主键来建立关系的。

从底层实现上来看,hasOnebelongsTo 是相似的。它们的区别主要体现在它们所表示的关系的方向上。hasOne 表示当前模型有一个关联模型,而 belongsTo 表示当前模型属于一个关联模型。

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 4
Complicated

因为是一对一嘛,感觉其实是一样的,我都是用hasOne

1年前 评论

一个是正向,一个是反向,相对具体场景而言

1年前 评论

表里面有关联别的表的字段使用belongsTo

表里面没有关联表字段。而是关联表有本表字段建议用hasOne

不不过我不管哪种一对一直都用hasOne。只要知道为啥就行。感觉他们2个最大区别就是 参数2和参数3的位置调换了 哈哈

1年前 评论

都是一对一但是我理解的是有语义的
人 (person) 身份证 (idCard)
一个人只有一张身份证 定义在person 就用hasOne
一张身份证被人拥有 属于某个人 定义在idCard里面 就用belongsTo

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!