У меня возникла проблема при попытке сравнить базу данных данных с данными, вводимыми по форме. У меня есть "pedido"
, у этого есть много "items"
. Мне нужно сравнить "item"
от "item"
, если это изменяется в форме. Затем мне нужно получить исходные данные из базы данных и данные, измененные из формы. Проблема в том, когда я пытаюсь получить исходные данные из базы данных. Всегда получайте данные, измененные по форме. Как я могу получить исходные данные из базы данных после отправки формы?Получить данные из базы данных не из формы
ПРИМЕЧАНИЕ: я попробовал получить PedidoAuxiliar
до и после HandleRequest.Это не работает!
UPDATE CODE: Ввод как сравнение 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...
Я считаю, что вы должны взглянуть на [Политики изменения слежения] (http://doctrine-orm.readthedocs.org/projects/doctrine-orm/en/latest/reference/change-tracking-policies.html) – stevenll
Основная проблема заключается в том, что D2 поддерживает внутренний кеш объектов, поэтому ваши два запроса всегда возвращают тот же самый объект. Вы можете рассмотреть клонирование вашего базового объекта, а затем сравнить. Или сделайте некоторые изменения, которые другие люди предложили. – Cerad