在Symfony中更新多个条目

时间:2013-04-21 14:49:54

标签: arrays loops symfony foreach

在我的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();

我错过了什么?谢谢你的帮助!

3 个答案:

答案 0 :(得分:0)

根据评论编辑:

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

答案 1 :(得分:0)

Doctrine - insert multiple rows with just one save()

如果要查看大型数据集,请注意内存使用情况。

答案 2 :(得分: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();