从数据库而不是从表单获取数据


Get data from database not from form

我在尝试将数据数据库与表单输入的数据进行比较时遇到了问题。我有一个"pedido",这个有很多"items"。如果在表单中修改了"item",我需要将其与"item"进行比较。然后我需要从数据库中获取原始数据,并从表单中修改数据。问题是当我尝试从数据库中获取原始数据时。始终获取由表单修改的数据。提交表格后,我如何从数据库中获取原始数据?

注意:我在HandleRequest之前和之后都尝试过获取PedidoAuxiliar。这不起作用!

更新代码:输入如何比较items

这是我的控制器编辑操作:

public function editarAction(Request $request, $id)
    {    
        $em = $this->getDoctrine()->getManager();
        $pedido = $em->getRepository('PedidosBundle:Pedido')->find($id);
        //$pedidoAuxiliar = $em->getRepository('PedidosBundle:Pedido')->find($id);
        $formulario = $this->createForm(new PedidoType(), $pedido, array(
            'action' => $this->generateUrl('my_routing', array('id' => $id)),
            'attr' => array(
                'novalidate' => 'novalidate'
            ),
            'method' => 'POST',
        ));
        $formulario->handleRequest($request);
        if($formulario->isValid()){
            $pedidoAuxiliar = $em->getRepository('PedidosBundle:Pedido')->find($id);
            foreach($pedido->getArticulos() as $articulo){
            foreach($pedidoAuxiliar->getArticulos() as $articuloAuxiliar){
                if($articuloAuxiliar->getId() == $articulo->getId()){
                    if($articuloAuxiliar->getCantidad() == $articulo->getCantidad()){
            //Some code...

要从数据库获取数据,u可以使用EntityManager::refresh($entity)使用数据库覆盖实体数据。所以你必须使用来自表单的数据,而不是实体来进行比较。但你总是可以用教条来检查变化,例如:http://doctrine-orm.readthedocs.org/projects/doctrine-orm/en/latest/reference/change-tracking-policies.html因为条令包含关于旧值和新值的信息,但不太容易获得(外部侦听器)

我找到了一个解决方案。我在config.yml中创建了一个新的连接实体管理器。现在,我从我的新实体经理那里调用我的实体数据,并从数据库中获取数据!谢谢