2015-10-28 65 views
0

我在嘗試比較數據庫和表單輸入數據時遇到問題。 我有一個"pedido",這有很多"items"。我需要比較"item"通過"item"如果這是修改形式。 然後我需要從數據庫中獲取原始數據和從表單中修改數據。 問題是,當我嘗試從數據庫中獲取原始數據。 始終獲取由表單修改的數據。 如何在提交表單後從數據庫中獲取原始數據?從數據庫中獲取數據不是從表格

注意:我已經嘗試在HandleRequest之前和之後獲得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... 
+0

我相信你應該看看[Change Tracking Policies](http://doctrine-orm.readthedocs.org/projects/doctrine-orm/en/latest/reference/change-tracking-policies.html) – stevenll

+0

基本問題是D2維護對象的內部緩存,因此您的兩個查詢將始終返回完全相同的對象。您可能會考慮克隆您的基礎對象,然後進行比較。或者做一些跟其他人建議的變化追蹤。 – Cerad

回答

0

我已經找到了解決辦法。我在我的config.yml中創建了一個新的連接實體管理器。 現在我打電話給我的實體數據從我的新實體經理,我從數據庫中獲取數據!謝謝!