A veces es necesario ingresar directamente un registro a la base de datos el cual no debe ser manipulado previamente simplemente sirve como un campo de auditoria y de esta manera revisar en que fecha se realizo el cambio.
Cuando utilizamos el CRUD generado por Symfony2 nos genera en el update una función similar a esta:
public function updateAction(Request $request, $id)
{
$em = $this->getDoctrine()->getManager();
$entity = $em->getRepository('AppBundle:ControlCambios')->find($id);
if (!$entity) {
throw $this->createNotFoundException('Unable to find ControlCambios entity.');
}
$deleteForm = $this->createDeleteForm($id);
$editForm = $this->createEditForm($entity);
$editForm->handleRequest($request);
if ($editForm->isValid()) {
$em->flush();
return $this->redirect($this->generateUrl('controlcambios_edit', array('id' => $id)));
}
return array(
'entity' => $entity,
'edit_form' => $editForm->createView(),
'delete_form' => $deleteForm->createView(),
);
}
Simplemente para agregar este registro en el campo previamente creado basta con agregar la siguiente linea:
//Agrega directamente la fecha de la ultima revision
$entity->setFechaUltimaRevision(new \DateTime());
El método finalmente quedaría de la siguiente manera:
public function updateAction(Request $request, $id)
{
$em = $this->getDoctrine()->getManager();
$entity = $em->getRepository('AppBundle:ControlCambios')->find($id);
//Agrega directamente la fecha de la ultima revision
$entity->setFechaUltimaRevision(new \DateTime());
if (!$entity) {
throw $this->createNotFoundException('Unable to find ControlCambios entity.');
}
$deleteForm = $this->createDeleteForm($id);
$editForm = $this->createEditForm($entity);
$editForm->handleRequest($request);
if ($editForm->isValid()) {
$em->flush();
return $this->redirect($this->generateUrl('controlcambios_edit', array('id' => $id)));
}
return array(
'entity' => $entity,
'edit_form' => $editForm->createView(),
'delete_form' => $deleteForm->createView(),
);
}