AuthRole 角色表 继承Model
AuthRule 权限表 继承Model
AuthRoleRule 中间表 继承Pivot
AuthRole 角色表 定义关联
$this->belongsToMany('AuthRule', 'AuthRoleRule', 'rule_id', 'role_id');
然后在控制器里执行:
$auth_role = AuthRoleModel::get(1);
$auth_role->rules()->detach();
$auth_role->rules()->saveAll([1,2,3,4,5,6]);
发现中间表只增加一条数据,查看sql日志,发现只 REPLACE INTO 了一条数据,剩下的都是UPDATE
查看thinkphp源码,在BelongsToMany类里面的attach方法,循环调用Model类的save方法,Model里面有个属性 $this->exists,只要第一次insert了,就是true,后面的数据,全部update,所以导致只增加了一条数据,后面的全部更新第一条数据
请问这个是bug吗?麻烦解答下,版本5.1.31 LTS
最佳答案