2013-06-12 128 views
2

多個表我使用笨的Active Record類笨活動記錄:插入空記錄到基於ID

我試圖在多個表一個特定的ID創建空記錄。例如,假設我的用戶的ID爲$user_id,我想要create empty records in tables T1, T2 and T3。我有麻煩的代碼是:

 // Store the select statement in cache 
     $this->db->start_cache(); 
     $this->db->set('user_id', $user_id); 
     $this->db->stop_cache(); 
     // Insert empty record in tables related to user 
     $this->db->insert('T1'); 
     $this->db->insert('T2'); 
     $this->db->insert('T3'); 
     $this->db->flush_cache(); 

空記錄插入表T1但後來我得到的錯誤:

您必須使用「設置」方法來更新條目。

編輯: - 顯然,T1, T2 & T3user_id列的表。

我在做什麼錯,我該如何解決這個問題?我是codeigniter的新手,CI文檔不清楚這個問題。

回答

1

而不是使用$this->db->set()的,你可以存儲在一個陣列所需的值,然後執行插入。這可能有助於

// Store the select statement in cache 
    $data = array("user_id"=>$user_id); 

    // Insert empty record in tables related to user 
    $this->db->insert('T1',$data); 
    $this->db->insert('T2',$data); 
    $this->db->insert('T3',$data); 
+0

您好curious_coder。非常感謝您的回覆!這正是我正在尋找。作品和優雅:)再次感謝! :) – joshi

0

試試這個

// Store the select statement in cache 
    $this->db->cache_on(); 
    $this->db->set('user_id', $user_id); 
    $this->db->cache_off(); 
    // Insert empty record in tables related to user 
    $this->db->insert('T1'); 
    //$this->db->set('user_id', $user_id); 
    $this->db->insert('T2'); 
    //$this->db->set('user_id', $user_id); 
    $this->db->insert('T3'); 
    $this->db->cache_delete_all(); 
+0

嗨丹麥,當然這會工作,但我緩存的語句前面'$這個 - > DB->設置(「USER_ID」,$ USER_ID);'正是爲了避免重複這樣一句話: (。想知道是否有更優雅的方法來做到這一點? – joshi

+1

您好丹麥語,您的新解決方案也無法工作:(儘管如此,請查看下面curious_coder的解決方案,我肯定了解了一些新的東西。 :) – joshi