0

私の Symfony プロジェクトでは、一度に複数のデータベース エントリを更新したいと考えています。

出発点は、既存のエントリを更新する日付と値のこの配列です。

$updates = Array ( [0] => Array ( [date] => 2007 [value] => 5 )
                   ...
                   [4] =>Array ( [date] => 2010 [value] => 8 ));

foreach で $date と $value を取得します。

 foreach($updates AS $update)
 {
     $date = $update['date'];
     $value = $update['value'];
 }

私の問題は、$updates から [date] と [value] の値を取得して、エントリを正しく更新することです。次のようにすべてのエントリを更新すると、何らかの理由で $updates の最後の配列のみが取得されます。

           foreach($repo->customQuery($parameter1,..., $parameter5) AS $obj)
           {
               $obj->setThis($date)
                   ->setThat($value);
               $em->persist($obj);
           }
           $em->flush();

私は何が欠けていますか?助けてくれてありがとう!

4

3 に答える 3

0

Doctrine - たった 1 回の save() で複数の行を挿入する

大規模なデータセットを処理する場合は、メモリの使用に注意してください。

于 2013-04-23T14:47:07.233 に答える
0

私の問題の解決策は、2 つの foreach の代わりに 1 つの for ループを使用することです。

    $statistic = (array with entities to be updated);
    $update = (array with new values);

    for($i = 0; $i < count($update); $i++)
    {
        $valStatistic = $statistic[$i];
        $valDate = $update[$i]['fromDate'];
        $valValue = $update[$i][$value];

        $valStatistic->setThis($valDate)
                     ->setThat($valValue);

        $em->persist($valStatistic);   
    }
    $em->flush();
于 2013-05-16T08:36:36.013 に答える