2013-04-21 13 views
0

В моем проекте Symfony я хочу обновить сразу несколько записей базы данных.Обновление нескольких записей в Symfony

Начальная точка это массив дат и значений Я хочу, чтобы обновить существующие записи:

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

Я получаю $ дату и $ значение с Еогеасп:

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

Моя проблема заключается в получите значения [date] и [value] из $ updates, чтобы правильно обновить записи. По какой-то причине только последний массив из $ обновлений принимается при обновлении всех таких записей:

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

Что мне не хватает? Спасибо за любую помощь!

ответ

0

Решение моей проблемы заключается в использовании одного для цикла вместо двух 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(); 
0

Отредактированные на основе комментариев:

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

Это не решает проблему :(. Но только для моего понимания, используя два Foreach петли так, как описано должно работать, не так ли? –

+0

Две петли должны работать, но вы по-прежнему нужен упорствовать. – Lighthart

+0

Спасибо для вашего последующего действия, но, как было ясно из моего отредактированного вопроса, проблема в том, что для обновления всех записей используется только последний массив из $ updates. Когда I print_r ($ date) во втором цикле foreach, он показывает все даты четыре раза, поэтому я предполагаю, что причиной является две комбинации foreach. Есть ли другой способ доступа ко всем значениям в массиве, чем использовать foreach? Я попробовал array_map(), но не смог понять это правильно. –

Смежные вопросы