我有一个项目,其中存在不同的用户类型,每个用户类型都应与系统中的特定模型相关。
例如,客户拥有购买权,而卖方拥有商品,在某些情况下,卖方实际上可以是买家,但他仍应拥有自己对商品的访问权限。
我不确定我是不是很好地解释了问题,但是我对解决方案的想象是这样
假设我们使用laratrust或任何为模型提供角色和权限特征的软件包,该模型恰好是User模型,代表系统中的所有用户类型。
代码将像这样...
public function items(){
if($this->hasRole("Seller"))
return $this->hasMany(Item::class);
}
}
形态关系方法的问题-在我看来-登录用户和访问类型之间将存在另一层,这根本无法简化解决方案,因此我必须输入类似这样的内容< / p>
$user->type->items;
上面的代码用于获取卖方设置的项目,更不用说类型在整个应用程序中将是模棱两可的,而且我不认为我们会因为角色管理权限而失去laratrust的权限。
多防护方法也是有风险的,因为如上所述,用户模型实际上并不是分开的,相反,它们与其他模型有着严格的关系并且必须明确规定,这是我必须处理的升级/降级问题一些用户的特权,我认为使用多防护方法很难做到这一点。
问题是,如何定义条件关系,以根据用户的角色将用户与某些模型相关联?