Qual è il modo migliore per aggiornare più record nel database usando doctrine, symfony2?Symfony - aggiorna più record
Ricevo array di ID di record che devo aggiornare.
Desidero assegnare a ciascun record il suo indice dalla matrice ricevuta alla colonna show_order. Quindi, se io ricevo gamma $ array = array (22, 1, 5, 10), poi voglio fare
$i = 0;
foreach($array as $a) {
$record = $this->getDoctrine->getRepository('AcmeBundle:SomeEntity')->findOneById($a);
if ($record != null) $record->setOrder($i++);
}
$this->getDoctrine()->getEntityManager()->flush();
ma è modo orribile, perché per ogni record che faccio una SELECT, quindi numero di query è Sopra).
Come fare meglio?
Per ora ho un'idea: ottenere tutti i record, controllare quale ordine è cambiato e aggiornarli solo. Ma non mi sento soddisfatto a causa di quella soluzione. Quindi eseguirà un SELECT per ottenere tutti i record, pochi seleziona (per ottenere oggetti entità) e pochi aggiornamenti (o forse uno, perché penso che l'aggiornamento sia invocato dopo flush()). –
Se non c'è una buona soluzione con doctrine2 forse dovrei farlo in chiaro PHP e usare CASE QUANDO ... THEN ... in sql query? –