【问题标题】:CodeIgniter MVC and updating two different tables in one functionCodeIgniter MVC 并在一个函数中更新两个不同的表
【发布时间】:2012-04-03 11:05:17
【问题描述】:

我有一个基于 JavaScript 的页面,其中一个网格显示从数据库中获取的注册用户的所有数据。在 UI 中,我还有名为“组”的列,它显示每个用户参与的组,但是这个使用另外两个附加表获取信息 - 以“id”和“group_name”为列的“groups”,以及以“user_id”和“group_id”为列的表“users_groups”,它们是与“用户”相关联的外键和“组”表。

问题在于,当您单击以编辑 UI 网格中的任何用户时,会有一个 AJAX 发布 JSON 以包含用户的信息,其中包括 'groups' 列实际上不是 'users' 表的一部分。所以我有这个:

$data = json_decode($this->input->post('data'), true);

最初(尚未添加组时)在此进行了转换:

$data = array(
         'id' => $data['id'],
         'email' => $data['email'],
         'firstname' => $data['firstname'],
         'lastname' => $data['lastname'],
         'usertype' => $data['usertype']
          );

然后解析到名为'mUsers'的模型,更新函数在哪里:

$query = $this->mUsers->update($data);

从现在开始的模型非常简单,因为只有一张桌子:

public function update($data)
    {
        $this->db->where('id', $data['id']);
        $query = $this->db->update('users', $data);

        return true;
    }

但现在我必须更新另一个表 - 'users_groups',我正在考虑我的选项。是否可以只添加到另一条记录上方的 $data 数组显示:

'groups' => $data['groups']

并尝试在一个函数中实现所有逻辑(如果可能的话,如果我可以在一个函数中有两个不同的活动记录查询,我找不到信息)或者我想到的第二件事是在解码 JSON 之后制作类似的东西:

$dataGroups = array(
    'groups' => $data['groups'] //adding groups data to be fetched for update   
                );

然后将数据解析为新函数,例如:

$q = $this->mUsers->updateGroups($dataGroups);

在这种情况下,更好的方法是什么?

谢谢 勒隆

【问题讨论】:

    标签: php codeigniter activerecord


    【解决方案1】:

    使两者都起作用。并在必要时调用它们,您也只能单独调用 usergroup 函数

    //this function update all user data including group
    public function updateUser($data, $changeGroup = true)
    {
        $this->db->where('id', $data['id']);
        $query = $this->db->update('users', $data);
         if($changeGroup) {
           $this->updateUserGroup($data['id'], $data['groups']);
        }
    }
    
    //Update user group
    public function updateUserGroup($userid, $usergroups)
    {
       //Update user groups
    }
    

    【讨论】:

    • 我现在明白了。在这种情况下,我们可以将 public 函数 updateUserGroup($userid, $usergroups) 设为私有,如果我理解你的想法,它将仅以 updateUser 形式调用?
    • 公开,以后开发中可以在 updateUser 之外调用
    猜你喜欢
    • 1970-01-01
    • 2020-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多