使用Propel ORM将多个条目插入Mysql数据库

时间:2013-08-29 17:58:18

标签: php mysql propel

我正在使用PHP编写Web应用程序。我第一次开始使用Propel ORM。我正在从数组中读取值并将它们发送到具有Propel Insert Queries的函数。功能就是这样。

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());
}

当我执行程序时,第一个项目“first”保存但立即被第二个项目覆盖,即“second”。以下是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

如您所见,第一项被第二项取代! 有任何解决方案可以防止这种情况吗?

由于

1 个答案:

答案 0 :(得分:0)

什么是$this->tags

我想,既然您正在使用$this->,那么每次进入函数saveTags()时都会使用该对象。

您可以做的是每次都创建一个新标签,例如:

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

   return $tags;
}

这样,每次拨打saveTags时,都会创建标记。