PHP中多对多关联的方法,多对多关联 · thinkphp常用方法总结 · 看云

本文详细介绍了Laravel框架中模型之间的多对多关联关系,包括如何定义belongsToMany方法,以及如何进行关联查询、新增、删除中间表数据的操作。通过示例代码展示了如何获取用户的所有角色,如何附加和移除角色,以及如何处理中间表的额外属性。
摘要由CSDN通过智能技术生成

> ## 多对多关联:描述:如用户和角色的关系

> ### 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]);

```

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值