我正在使用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
如您所见,第一项被第二项取代! 有任何解决方案可以防止这种情况吗?
由于
答案 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
时,都会创建新标记。