我在嘗試比較數據庫和表單輸入數據時遇到問題。 我有一個"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...
我相信你應該看看[Change Tracking Policies](http://doctrine-orm.readthedocs.org/projects/doctrine-orm/en/latest/reference/change-tracking-policies.html) – stevenll
基本問題是D2維護對象的內部緩存,因此您的兩個查詢將始終返回完全相同的對象。您可能會考慮克隆您的基礎對象,然後進行比較。或者做一些跟其他人建議的變化追蹤。 – Cerad