我有DB结构:
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和模型:
User, Project, Office, Role, Permission从Permission模型访问User模型的正确方法是什么?我尝试过这样做,但是在officeUserPermissions()错误的role_id值中,就像在projectUserPermissions()中
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');
}
}发布于 2022-09-08 13:13:59
用户和角色模型有很多到多个关系。您可以轻松地访问角色。但是,用户和权限之间的关系要复杂一些,您需要定义一个自定义SQL查询,或者这样做:
//role model
public function permissions() { return $this->belongsToMany(Permission::class); }
// user model
public function officeUserPermissions()
{ return $this->officeRole->map(function($role)
{ return $role->permissions}) ;
} 或
$user->offlineRole()->with('permissions')https://stackoverflow.com/questions/73647969
复制相似问题