我想如果订单接受者是登录的,那么在$areas中创建他自己的区域,并创建他的管理员(角色= 1)或子管理员(角色=2
我有3个表:(1.用户2.区域3.订单者)
我有3个角色:(1.admin 2. sub-admin 3.订单管理员)
管理员和子管理员可以创建(订单接受者和区域),订单接受者也可以创建(区域)
每个订单者都与用户表中的ot_of相关联(对于管理员(Id)和子管理员(Id))
每个区域都与created_by关联
我们需要执行第一个检查哪个订单者登录的步骤
if(Auth::user()->role == 1 ){
either ot_of (admin(ordertaker) role = 1 or subadmin(ordertaker) role = 2)
if{
then get area if ot_of belongs to admin then get both area created_by(ordertaker and admin)
}else
{
then get area if ot_of belongs to sub-admin then get both area created_by(order taker and sub-admin)
}
}我如何写这个查询每个人都用一个唯一的id唯一标识现在我正在使用这个代码得到区域
$idss = [Auth::id()];
if (Auth::user()->role < 3) {
$idss = array_merge($idss, User::where('ot_of', Auth::id())->pluck('id')->toArray());
}
$fitered_area = Area::all();
$allareas = $fitered_area->whereIn('created_by', $idss);但问题是,如果订单者是登录,他不能访问他的管理区,因为他没有创建它
发布于 2020-10-16 10:08:08
如果我可以为您的问题提供一个更动态的解决方案,请查看Laravel Permissions
以这种方式对角色和权限进行硬编码,很快就会纠缠在一起。
https://stackoverflow.com/questions/64367834
复制相似问题