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

教义 - 只用一个 save() 插入多行

如果您要处理大型数据集,请注意内存使用情况。

于 2013-04-23T14:47:07.233 回答
0

我的问题的解决方案是使用一个 for 循环而不是两个 foreach。

    $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 回答
0

根据评论编辑:

       foreach($repo->customQuery($parameter1,..., $parameter5) AS $obj)
       {
           $obj->setThis($date)
               ->setThat($value);
           $em->persist($ob); 
           $em->flush();
       }
于 2013-04-22T18:10:18.897 回答