【发布时间】:2014-08-20 08:12:18
【问题描述】:
我正在做一个项目,但无法弄清楚当前问题的解决方案。
查看
管理员可以使用复选框为用户分配多个或单个角色,如下图所示:
现在,当我们点击提交按钮时。下面是控制器的作用:
控制器
$addRoles['userID']=$uid;
$addRoles['addDate']=time();
foreach($this->input->post('roles') as $val)
{
$addRoles['roleID']=$val;
$this->admins->updateRole($addRoles);
}
它正在成功存储所有数据。在循环内部,我调用模型函数将数据添加到数据库中。
现在,我想做的是,如果当前用户有任何现有角色,则必须从数据库中删除所有现有角色,因为它不允许重复值。稍后,将所有角色一一添加到数据库中。这是我的模型代码:
型号
function updateRole($role){
$this->db->where('userID', $role['userID']);
$this->db->where('roleID', $role['roleID']);
$this->db->delete('user_roles');
$this->db->insert('user_roles', $role);
return ($this->db->affected_rows() > 0) ? TRUE : FALSE;
}
现在,我遇到的问题是,当模型运行删除查询时,如果该检查角色已经在数据库中,它只会删除记录。或者,如果我仅按用户 ID 删除,那么每次查询运行时它都会删除所有记录。我不能简单地插入记录,因为我必须更新角色,并且角色可以在不同的时间分配不同的。
任何帮助将不胜感激。 谢谢
【问题讨论】:
-
1> 从数据库表中获取所有保存权限 2> 通过将其与发布数据进行比较来制作两个数组。一是删除数组(需要删除哪些权限),二是插入数组(插入表的权限)
-
你能分享一下你的表结构吗...?所以,这很容易解释。
标签: php mysql sql database codeigniter