我有一个对搜索表单和表单类型建模的实体,我将该表单仅用于搜索目的,我不希望在数据库中修改该实体,因此,当我这样做时:
$formModelEntity = $em->getRepository('AppBundle:SearchForm')
->findOneBy(array('name' => 'the_model'));
$formModelForm = $this->createForm(new SearchFormType(), $formModelEntity, array('action' => $this->generateUrl('dosearch'), 'method' => 'POST'));
$formModelForm->handleRequest($request); //or ->submit($request);
if ($formModelForm->isValid())
{
$formInstanceEntity->setFieldsFromModel($formModelEntity);
$em->persist($formInstanceEntity);
$em->flush();
}
Run Code Online (Sandbox Code Playgroud)
该$formModelEntity
变化被保存到数据库中,我想避免这种情况,但仍希望利用的handleRequest
更新与所有的POST值的实体(只读目的)的能力。
这可能吗?
在 symfony 中,你只需要持久化一个新实体。如果您更新实体管理器找到的现有实体,然后刷新,即使您没有保留它,您的实体也会在数据库中更新。
编辑:您可以在使用以下代码行刷新实体之前从实体管理器中分离实体:
$em->detach($formModelEntity);
Run Code Online (Sandbox Code Playgroud)