laravel - 多对多关系 3 模型 Laravel [5.6]
问题描述
我的应用中有 3 个模型Company、User、Role
业务规则是这样的:
- 用户是公司的角色
- 埃隆是SpaceX的CEO
- Cindy是SpaceX的经理
- 埃隆是特斯拉的首席执行官
我正在考虑创建第 4 个模型,例如Employees。
但我不知道如何创建迁移并定义这些模型之间的关系。
解决方案
我也会去4张桌子
- 用户
- 角色
- 公司
- 用户角色公司
前三个表将保存常规数据,不保存其他表的任何外键,4个表将这些表相互关联,具有以下属性
- 用户身份
- 角色 ID
- company_id
现在,您欠的用户、角色和公司表将定义与 user_role_company 的关系,hasMany
并将user_role_company
与这 3 个表的反向关系定义为belongsTo
class User extends Model{
public function userRoleCompany()
{
return $this->hasMany('App\UserRoleCompany', 'user_id','id');
}
}
class Role extends Model{
public function userRoleCompany()
{
return $this->hasMany('App\UserRoleCompany', 'role_id','id');
}
}
class Company extends Model{
public function userRoleCompany()
{
return $this->hasMany('App\UserRoleCompany', 'company_id','id');
}
}
class UserRoleCompany extends Model{
public function user()
{
return $this->belongsTo('App\User', 'user_id');
}
public function role()
{
return $this->belongsTo('App\Role', 'role_id');
}
public function company()
{
return $this->belongsTo('App\Company', 'company_id');
}
}
推荐阅读
- python - Getting error in Could not find a version that satisfies the requirement conda==4.8.4 while downloading package from requirement.txt?
- objective-c - Invert Objective-C @available?
- swift - cannot find "count" in scope
- android-studio - Android Studio API SaveInstanceState
- python - Maskrcnn : add_loss() 引发 ValueError
- node.js - 哟 @microsoft/sharepoint 将重新运行此错误“TypeError:lookups.flatMap 不是函数”
- flutter - Dart - 使用 .exe 通过控制台获取命令行参数
- c++ - C++ WinRT32 应用程序上的 WinToast 显示奇怪的错误
- unit-testing - Dart 单元测试给出不一致的结果
- terraform - 使用 for_each 从实例中检索 IP 地址