在我的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();
我错过了什么?谢谢你的帮助!
答案 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();