2012-04-03 53 views
1

我有一個基於JavaScript的頁面,其中一個網格顯示註冊用戶從數據庫中獲取的所有數據。在UI中,我還有列名爲'groups'每個用戶都參與的組,但是這個信息是通過額外的兩個額外的表格獲得的 - 包含'id'和'group_name'列的'groups',以及'user_id'和'group_id'列作爲列的'users_groups'表它們是與「用戶」和「組」表相關聯的外鍵。CodeIgniter MVC和在一個函數中更新兩個不同的表格

問題是,當你點擊編輯任何用戶從UI網格有一個AJAX發佈JSON來包含用戶的信息,其中包括 '組'列實際上不是'用戶'表。所以我有這樣的:

$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」,我想我的options.Is它可能只是添加到$ data數組顯示上方的另一紀錄:

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

並嘗試在一個函數中實現所有的邏輯(如果這甚至可能,我不能找到信息,如果我可以在一個函數中有兩個不同的活動記錄查詢),或者我想到的第二件事是在解碼JSON之後進行如下操作:

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

然後解析數據到一個新的函數, ke:

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

這種情況下更好的方法是什麼?

感謝 Leron

回答

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 
} 
+0

我看到now.In這種情況下,我們可以讓公共職能updateUserGroup($用戶ID,$用戶組)私有,這將只叫如果我的主意正確無誤,請更新用戶表單? – Leron 2012-04-03 11:46:59

+0

把它公開,你可以把它叫做updateUser之外的,在未來的開發中 – safarov 2012-04-03 11:48:56

+0

好的,謝謝,會用它<3;) – Leron 2012-04-03 11:52:36

相關問題