公司做网站好吗,给公司做网站要多少钱,做网站价格多少钱,宁夏建设厅违规通报网站二#xff0e;多对多关联
多对多关联#xff0c;比前面两种要复杂一些#xff0c;需要一张中间表#xff0c;共三张#xff1b;
(1) .users#xff1a;用户表#xff1b; (2) .roles#xff1a;权限表#xff1b; (3) .role_user#xff1a;中间表#xff1a;默…二多对多关联
多对多关联比前面两种要复杂一些需要一张中间表共三张
(1) .users用户表 (2) .roles权限表 (3) .role_user中间表默认表名user_idrole_id默认外键可不指明
创建权限表Role.php留空在 User.php 设置多对多关联 //多对多关联
public function role() { return $this-belongsToMany(Role::class, role_user, user_id, role_id);
}PS参数 2 传中间表名参数 34 如果是默认值则可不传
多对多关联输出查看用户都拥有哪些权限
$roles User::find(19)-role;
return $roles; 获取权限列表中某一个数据和一对多操作方法一样但注意返回的表名称 //注意多对多这里 role()返回的是 role_user 表 //可以通过 dd($roles)查看所以where 需要用 role_id 来指明
$roles User::find(19)-role()-where(role_id, 1)-get();
return $roles; //当然你也可以使用集合的方式去实现筛选
$roles User::find(19)-role;
return $roles-where(id, 1);多对多的反向关联和其它两种方式也差不多 //反向多对多关联后面 id 是反的
public function user() { return $this-belongsToMany(User::class, role_user, role_id, user_id);
}
$users Role::find(1)-user;
return $users; 多对多会生成一个中间字段pivot里面包含多对多的双 id如果想要 pivot 字段包含更多的中间表字段可以自行添加还可以修改字段名
return $this-belongsToMany(Role::class, role_user, user_id, role_id) -withPivot(details, id) -as(pivot_name); 定义多对多绑定时可以在绑定方法内筛选数据
$this-belongsToMany(Role::class) ... -wherePivot(id, 1); PS还有 wherePivotIn以及派生的四种方法 PS除了一对一一对多多对多还有派生的远程一对一远程一对多以及多态一对一 多态一对多多态多对多。这些更多的扩展暂时不纳入基础的核心课程防止过于繁杂冗余 导致劝退。