我有两台User
型和Modules
型的
Modules
具有具有许多子代的递归父母/子代关系(SubModules
).
另一方面,用户可以具有许多模块和许多子模块(访问它们的权限),因此它们在N到N表users_modules
中
所以我想提取用户的所有模块,但这些模块只需要包括与用户相关的子模块.
现在,我的控制器中有类似这样的东西:
auth()->user()->modules->toArray();
但我不知道如何过滤那些子模块.
以下是我的模型(没有任何更改,因为我try 的所有模型都不起作用):
User个
class User extends Authenticatable
{
...
public function modules()
{
return $this->belongsToMany(Module::class, 'modules_users')->where('group', null)->with('subModules');
}
Module个
class Module extends Model
{
...
public function users()
{
return $this->belongsToMany(User::class, 'modules_users');
}
public function subModules()
{
return $this->hasMany(Module::class, 'group');
}
public function parent(): BelongsTo
{
return $this->belongsTo(Module::class, 'group');
}
}
有人能帮帮我吗?