首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel 9.* belongsToMany和belongsToMany

Laravel 9.* belongsToMany和belongsToMany
EN

Stack Overflow用户
提问于 2022-09-08 10:58:00
回答 1查看 113关注 0票数 1

我有DB结构:

代码语言:javascript
复制
user
    user_id
    
office
    office_id

project
    project_id

role
    role_id

permission
    permission_id
    
role_permission
    role_id
    permission_id
    
office_user
    office_user_id
    office_id
    user_id
    role_id

project_user
    project_user_id
    project_id
    user_id
    role_id

和模型:

代码语言:javascript
复制
User, Project, Office, Role, Permission

Permission模型访问User模型的正确方法是什么?我尝试过这样做,但是在officeUserPermissions()错误的role_id值中,就像在projectUserPermissions()

代码语言:javascript
复制
class User extends Authenticatable
{
    use HasApiTokens, HasFactory, Notifiable;

    public function projects()
    {
        return $this->belongsToMany(Project::class, 'project_user', 'user_id');
    }

    public function offices()
    {
        return $this->belongsToMany(Office::class, 'office_user', 'user_id');
    }

    public function officeRole()
    {
        return $this->belongsToMany(Role::class, 'office_user');
    }

    public function projectRole()
    {
        return $this->belongsToMany(Role::class, 'project_user');
    }

    public function officeUserPermissions()
    {
        return $this->belongsToMany(Permission::class, 'role_permission', 'role_id');
    }

    public function projectUserPermissions()
    {
        return $this->belongsToMany(Permission::class, 'role_permission', 'role_id');
    }


}
EN

回答 1

Stack Overflow用户

发布于 2022-09-08 13:13:59

用户和角色模型有很多到多个关系。您可以轻松地访问角色。但是,用户和权限之间的关系要复杂一些,您需要定义一个自定义SQL查询,或者这样做:

代码语言:javascript
复制
//role model

public function permissions() { return $this->belongsToMany(Permission::class); }

// user model
public function officeUserPermissions()
 { return $this->officeRole->map(function($role)
  { return $role->permissions}) ;
 } 

代码语言:javascript
复制
$user->offlineRole()->with('permissions')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73647969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档