首页 > 解决方案 > 多对多关系 3 模型 Laravel [5.6]

问题描述

我的应用中有 3 个模型CompanyUserRole

业务规则是这样的:

我正在考虑创建第 4 个模型,例如Employees

但我不知道如何创建迁移并定义这些模型之间的关系。

标签: laraveleloquentlaravel-5.6

解决方案


我也会去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');
    }

}

推荐阅读