Laravel 中多对多关系中连接表的命名约定

Posted

技术标签:

【中文标题】Laravel 中多对多关系中连接表的命名约定【英文标题】:Naming convention for join tables, in a many to many relationship, in Laravel 【发布时间】:2016-12-28 13:12:16 【问题描述】:

我有 3 张桌子。

前两个表是 Groups 和 Accounts。

一个帐户可以属于多个组。

一个组可以有多个帐户。

换句话说,它是多对多关系。

因此我需要第三张表,即连接表

Laravel 中这个连接表的推荐命名约定是什么(或者可能是一般性的)。

是否有任何命名约定?

我打算将其称为“GroupsAccountAssignment”。

【问题讨论】:

应该是account_group 【参考方案1】:

数据透视表的名称应该是account_group

如 laravel 中给出的docs

要定义这种关系,需要三个数据库表:用户、 角色和角色用户。 role_user 表派生自 相关型号名称的字母顺序,并包含 user_id 和 role_id 列。

不过,您始终可以覆盖默认命名约定,如下所示: 帐户模型:

return $this->belongsToMany('App\Group', 'GroupsAccountAssignment', 'account_id', 'group_id');

【讨论】:

那么什么是laravel命令来制作模型和迁移。我使用./artisan make:model AccountGroup -m,但这将创建一个名为account_groups 的表。 事实上在这种情况下,我什至需要制作第三个模型吗? 不..你不需要创建第三个模型 Laravel 将处理没有模型的关系

以上是关于Laravel 中多对多关系中连接表的命名约定的主要内容,如果未能解决你的问题,请参考以下文章

Laravel中多对多关系的多重搜索子句

在多对多关系中命名表 laravel

与同一张表的关系(多对多?) - Laravel

laravel 使用具有多对多关系数据透视表的策略

Laravel 定义同一张表的多对多关系

与多个中间表的多对多 Laravel Eloquent 关系