2010-02-19 41 views
0

在我正在構建的cakePHP項目中,我想插入定義數量的相同記錄。這些將用作稍後添加額外數據的佔位符記錄。每條記錄將插入從兩個belongs_to關係中取得的ID以及另外兩個字符串值。如何使用CakePHP插入多行

我想要做的就是能夠輸入我想創建的記錄數量的值,這等於保存期間數據循環的次數。

什麼我不知道的是:

  1. 如何設置一個循環來處理插入

  2. 如何在CakePHP中定義表單域的一組數字,只設置數量記錄創建。

我已經試過如下:

function massAdd() { 
    $inserts_required = 1; 
    while ($inserts_required <= 10) { 
     $this->Match->create(); 
     $this->Match->save($this->data); 
     echo $inserts_required++; 
    } 

    $brackets = $this->Match->Bracket->find('list'); 
    $this->set(compact('brackets')); 
} 

什麼情況是:

  1. 在屏幕的頂部,上面的文檔類型,字符串12345678910是顯示,這是顯示在屏幕上

  2. 總共創建了11條記錄,並且僅最後一條記錄具有在表單中傳遞的值。我不知道爲什麼會創建11個記錄而不是10個,爲什麼只有最後一個記錄具有輸入的表單數據?

一如既往,您的幫助和方向是讚賞。

+0

你的SQL日誌的輸出是什麼?我只是完全按照上面的方式完成了,並且我正確插入了10條記錄,其中包含表單數據。你的sql日誌應該幫助我們弄明白。 – 2010-02-24 17:16:37

回答

2
  1. 在你看來

    試着寫類似

    echo $form->input('Answer.n.title', array('type'=>text')); 
    

    在控制器寫

    function add(){ 
        $this->Answer->saveAll($this->data); 
    } 
    
  2. 在項目中,我使用jQuery的

    ,添加一個新行無需重新加載頁面。

+0

我試過的是: 函數massAdd(){\t \t $ inserts_required = 1; ($ inserts_required <= 10){this-> Match-> create(); $ this-> Match-> save($ this-> data); echo $ inserts_required ++; } $ brackets = $ this-> Match-> Bracket-> find('list'); $ this-> set(compact('brackets')); } 會發生什麼情況是: 1)在屏幕的頂部,在文檔類型上方,顯示字符串12345678910, 2)總共創建了11條記錄,並且只有最後一條記錄具有傳入的值形成。 我不知道爲什麼會創建11個記錄而不是10個,並且爲什麼只有最後一個記錄具有輸入的表單數據? – Paul 2010-02-23 04:21:42

+0

我不知道爲什麼只保存了第10條記錄,因爲由於你的代碼,必須有10條插入的相同記錄... 有點小費,在保存之前就做了pr($ this-> data);並以什麼格式分析您的發佈數據。 – Aziz 2010-02-23 23:08:36