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」が保存されますが、すぐに 2 番目の項目、つまり「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

ご覧のとおり、最初のアイテムが 2 番目のアイテムに置き換えられました。これを防ぐための解決策はありますか?

ありがとう

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 に答える