我在尝试比较数据数据库时遇到问题,并且通过表单输入数据。
我有"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...
答案 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中创建了一个新的连接实体管理器。 现在我从我的新实体管理器调用我的实体数据,我从数据库中获取数据!谢谢!