我有6张桌子:
permissions:
id
permission_name
roles:
id
role_name
user_roles:
id
user_id
role_id
user_permissions:
id
user_id
permission_id
role_permissions:
id
role_id
permission_id
users:
id
username
email
现在,我想添加一个自定义函数到我的雄辩模型中的权限名为getUsersBackPersion()。
现在,用户可能拥有他所赋予的角色的权限(用户表在user_roles上连接,在role_permissions上连接该表,最后一个表在权限上连接。
或者用户在用户权限表中设置了特定权限(在用户表上加入用户权限表,在用户权限表上加入权限表)
如何创建一个雄辩的模型函数,返回所有具有特定权限的用户,比如说:“notification.error.process”,其中是权限名称
hasMany并不能完全满足我的需要(我不能在其中定义多个表)。我使用的是Laravel 5.6。
试着用这个ER图来理解您的表结构。
要处理这种情况,您可以创建3个“雄辩的模型”
在每个模型中,您可以创建与其他模型之间的belongtomany()
关系。
一个例子,关于“用户模型”
public function permissions()
{
// need to define any other differences in your tables foreign keys as 2nd, 3rd parameters and so on.
return $this->belongsToMany(Permission::class);
}
现在,您需要获取所有用户的“谁拥有一个拥有特权的角色”或“谁直接拥有特权”。
这样做。
$users = User::whereHas('privileges', function($query) {
$query->where('permission_name', 'notification.error.process');
})->orWhereHas('roles.permissions', function($query) {
$query->where('permission_name', 'notification.error.process');
})->get();
我希望你会得到一个想法。你的代码可能和我的略有不同。但这是概念。
如果您正确定义了多对多关系(用户权限和用户角色权限),则以下操作可以实现此目的:
$permissionName = 'notification.error.process';
$usersWithPermission = User::whereHas('permissions', function($query) use ($permissionName) {
$query->whereName($permissionName);
})->orWhereHas('roles.permissions', function($query) use ($permissionName) {
$query->whereName($permissionName);
})->get();
插入新记录或更新(如果存在)的缩写是什么?
以前我使用过的ORM将数据库列直接映射到类属性,这允许您查看特定的属性可见性,就像您通常会限制对某些属性(例如密码)的访问一样。 有了雄辩,我似乎无法复制这一点,因为数据库列映射到不包含可见性的内部属性数组。 我的愿望是将用户密码的访问范围仅限于对象,即私有。 设置具有可见性的类属性不起作用,因为该属性超出了雄辩模型属性的范围,因此该属性未映射到列。 雄辩的$隐藏和$保护属性不起作用,因为它们处理
mutli-cache Java多级缓存框架 L1: 进程内缓存(ehcache) L2: 集中式缓存,支持多种集中式缓存服务器,如 Redis 缓存任意切换 可使用单一缓存,ehcache或redis 支持redis集群,代码无需任何改动 支持 JGroups 和 Redis Subscribe 两种方式进行缓存同步。在某些云平台上可能无法使用 JGroups 组播方式,可以采用 Redis 发
我有三张桌子: 类别(id、名称) 类别赛(类别赛id,锦标赛id)-- Category是可用类别列表Category_Tornament是管理员配置的类别列表Category_Tornament用户是用户已注册的类别 要获得锦标赛中的所有类别,我可以使用以下工具轻松完成: 在竞赛模型中定义归属关系 我不知道如何定义与上一个表的关系。 我需要的是用户单击几个类别,我可以运行如下操作: 我应该在哪
我有三种型号:发票、发票项和产品。 每个发票都与Invoiceitems模型有许多关系。 每个发票项目与产品模型有一个关系。 我需要计算产品类别为4的Invoiceitem产品金额的总和。 表结构 发票 id |日期|总金额| 发票项目 id|发票|product_id|product_amt|数量|total_amt 产品 ID|product_name|category_id 关系 发票模型
我试着补充: 并用调用,但响应为空。