使用codeigniter删除并在数据库中插入多个记录

时间:2014-08-20 08:12:19

标签: php mysql sql database codeigniter

我正在研究一个项目,无法找出当前问题的解决方案。

查看

管理员可以使用复选框为用户分配多个或单个角色,如下图所示:

enter image description here

现在,当我们点击提交按钮时。这是控制器的作用:

控制器

        $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 个答案:

答案 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中插入要更新的新值集。

我希望这能帮到你!