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

时间:2015-10-28 07:52:15

标签: php forms symfony entity

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

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

更新代码:输入比较items

的方式

这是我的控制器editAction:

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...

2 个答案:

答案 0 :(得分:1)

要从db获取数据,您可以使用EntityManager :: refresh($ entity)使用db覆盖实体数据。所以你必须使用表单中的数据,而不是实体进行比较。 但你总是可以通过Doctrine来检查变化,例如:http://doctrine-orm.readthedocs.org/projects/doctrine-orm/en/latest/reference/change-tracking-policies.html 因为Doctrine持有关于旧值和新值的信息,但不容易获得(外部听众)

答案 1 :(得分:0)

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