【发布时间】: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