¿Cuál es la mejor manera de actualizar múltiples registros en la base de datos usando doctrine, symfony2?Symfony - actualizar múltiples registros
Recibo un conjunto de identificadores de registros que debo actualizar.
Quiero asignar a cada registro su índice de la matriz recibida a la columna show_order. Así que si recibo arreglo $ array = array (22, 1, 5, 10), entonces quiero hacer
$i = 0;
foreach($array as $a) {
$record = $this->getDoctrine->getRepository('AcmeBundle:SomeEntity')->findOneById($a);
if ($record != null) $record->setOrder($i++);
}
$this->getDoctrine()->getEntityManager()->flush();
pero es horrible manera, porque para cada registro que hago un SELECT, por lo que el número de consultas es En).
¿Cómo hacerlo mejor?
Tengo por ahora una idea: obtener todos los registros, verificar qué orden ha cambiado y actualizarlos solo. Pero no me siento satisfecho por esa solución. Así que hará un SELECCIONAR para obtener todos los registros, pocas selecciones (para obtener objetos de entidad) y algunas actualizaciones (o tal vez una, porque creo que la actualización se invoca después de flush()). –
Si no hay una buena solución usando doctrine2 quizás debería hacerlo en PHP claro y usar CASE WHEN ... THEN ... in sql query? –