2013-08-29 57 views
0

我正在使用PHP編寫Web應用程序。我第一次開始使用Propel ORM。我正在讀取數組中的值並將它們發送到具有「推進插入查詢」功能。功能是這樣的。使用Propel將多個條目插入Mysql數據庫ORM

public function someFunction 
{ 
    $nid=10; 
    $sample_array = array("first","second"); 
     foreach($sample_array as $items){ 
      $this->saveTags($items,$nid); 
     } 
} 

public function saveTags($tags,$nid) 
{ 
    error_log("SetTag: ".$this->tags->setTag($tags)); 
    error_log("SetNid: ".$this->tags->setNid($nid)); 
    error_log("Save: ".$this->tags->save()); 
} 

當我執行程序,第一項「第一」節省,但立即被第二個項目即「第二」覆蓋。以下是Apache的錯誤日誌。

SetTag: Tid: null\nNid: null\nTag: first\n 
SetNid: Tid: null\nNid: 30\nTag: first\n 
Save: 1 
SetTag: Tid: 11\nNid: 30\nTag: second\n 
SetNid: Tid: 11\nNid: 30\nTag: second\n 
Save: 1 

正如你所看到的第一個項目是由第二項所取代! 任何解決方案,以防止這種情況?

謝謝

回答

0

什麼是$this->tags

我想,因爲您正在使用$this->,所以您每次進入函數saveTags()時都要使用該對象。

你可以做的是每次創建一個新的標籤,是這樣的:

public function saveTags($tags,$nid) 
{ 
    $tags = new Tags(); 
    $tags->setTag($tags); 
    $tags->setNid($nid); 
    $tags->save(); 

    return $tags; 
} 

這樣,每次你會打電話saveTags它會創建一個新的標籤時間。

相關問題