Laravel 多对多关系( hasMany 或 belongsToMany )

Posted

技术标签:

【中文标题】Laravel 多对多关系( hasMany 或 belongsToMany )【英文标题】:Laravel Many to Many Relationship ( hasMany or belongsToMany ) 【发布时间】:2018-01-03 02:41:26 【问题描述】:

我目前正在使用 Laravel 构建我的第一个应用程序,并且偶然发现了我不知道如何设置模型(用户和组)之间的多对多关系的问题。

我创建了一个板,在其中存储所有用户与他们所在的组之间的关系。 我的问题是我不知道如何在 Laravel 中访问和设置它。 我不确定我是否必须使用 hasMany 或 belongsToMany。

我正在尝试找到一种将用户添加到组的方法,以便在 UserGroups 表中创建一个新条目。

我的桌子:

用户

身份证 姓名 电子邮件

身份证 姓名 创作者 ID

用户组

用户 ID Group_ID

感谢任何帮助,谢谢!

【问题讨论】:

【参考方案1】:

如果要创建多对多关系,应该是belongsToMany,而不是hasMany

Group 模型中:

public function users()

    return $this->belongsToMany(Group::class);

User 模型中:

public function groups()

    return $this->belongsToMany(User::class);

数据透视表应称为group_user

https://laravel.com/docs/5.4/eloquent-relationships#many-to-many

【讨论】:

【参考方案2】:

在模型类中,使用belongsToMany,如下所示:https://laravel.com/docs/5.4/eloquent-relationships#many-to-many

要将用户添加到组,请使用 attach(),如下所示: https://laravel.com/docs/5.4/eloquent-relationships#the-create-method(滚动到多对多关系)

【讨论】:

以上是关于Laravel 多对多关系( hasMany 或 belongsToMany )的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 关系,hasmany 和 blongstomany

Laravel 5:如何更新与多对多相关的项目(删除+添加)

获取所有属于子类别的文章 多对多 Laravel

Laravel 多对多关系:Pivot VS JSON

Laravel一张表连接到另外两个由多对多的关系

Laravel 上的多对多问题关系