我有一个基于JavaScript的页面,其中网格显示从数据库中获取的注册用户的所有数据。在UI中,我还有一个名为“groups”的列,显示每个用户都参与的组,但是这个信息是使用另外两个附加表 - 'groups'以'id'和'group_name'作为列,以及一个表'users_groups',其'user_id'和'group_id'作为与'users'关联的外键的列'组'表。
问题在于,当您单击从UI网格中编辑任何用户时,会发布一个发布JSON的AJAX,其中包含用户的信息,其中包含 '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);
在这种情况下,更好的方法是什么?
由于 Leron
答案 0 :(得分: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
}