我正在研究一个项目,无法找出当前问题的解决方案。
查看
管理员可以使用复选框为用户分配多个或单个角色,如下图所示:
现在,当我们点击提交按钮时。这是控制器的作用:
控制器
$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,那么它将在每次运行查询时删除所有记录。我不能简单地插入记录,因为我必须更新角色,并且角色可以在不同的时间分配不同。
任何帮助将不胜感激。 感谢
答案 0 :(得分:0)
你可以做两个功能 1)saveRoles($ role,$ user_id) 2.)updateRoles($ role,$ user_id)
function saveRoles($role, $user_id)
{
// can save roles of user using insert
}
function updateRoles($role, $user_id)
{
// delete all existing roles of that user
// with only user_id in where clause
// after that you can call
$this->saveRoles($role, $user_id);
}
updateRoles函数将删除所有现有条目,并在Db中插入要更新的新值集。
我希望这能帮到你!