多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
> ## 多对多关联:描述:如用户和角色的关系 > ### belongsToMany('关联模型名','中间表名','外键名','当前模型关联键名',['模型别名定义']); ### 关联定义 ``` class User extends Model { public function roles() { return $this->belongsToMany('Role'); // 设置中间表 return $this->belongsToMany('Role','\app\index\model\Access'); } } class Role extends Model { public function users() { return $this->belongsToMany('User'); } } ``` ### 关联查询 ``` // 获取一个用户的所有角色 $user = User::get(1); dump($user->roles); // 获取中间表数据 $user = User::get(1); $roles = $user->roles; foreach($roles as $role){ dump($role->pivot); } ``` ### 关联新增 ``` $user = User::get(1); // 给某个用户新加一个管理员的角色 $user->roles()->save(['name'=>'管理员']); // 批量增加关联数据 $user->roles()->saveAll([ ['name'=>'管理员'], ['name'=>'操作员'], ]); $user = User::get(1); // 仅增加关联的中间表数据 $user->roles()->save(1); // 或者 $role = Role::get(1); $user->roles()->save($role); // 批量增加关联数据 $user->roles()->saveAll([1,2,3]); // 单独更新中间表 $user = User::get(1); // 增加关联的中间表数据 $user->roles()->attach(1); // 传入中间表的额外属性 $user->roles()->attach(1,['remark'=>'test']); // 删除中间表数据 $user->roles()->detach([1,2,3]); ```