0

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

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

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

谢谢

4

1 回答 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它都会创建一个标签。

于 2013-08-30T19:07:35.240 回答