要将条目保存到数据库,我们可以使用:
$em->persist($entity);
$em->flush();
但是我们如何在不使用的情况下更新现有条目$this->getEntityManager()->createQuery()
?
我们可以吗?
我正在寻找某种$em->update()
数据库中的现有条目。
简单的做法,Fusselchen说的对,举个例子
// get entity manager
$em = $this->getDoctrine()->getEntityManager();
// get from this entity manager our "entity" \ object in $item
// also we can get arrayCollection and then do all in foreach loop
$item = $em->getRepository('repoName')->findOneBy($filter);
// change "entity" / object values we want to edit
$item->setSome('someText')
//...
// call to flush that entity manager from which we create $item
$em->flush();
// after that in db column 'some' will have value 'someText'
// btw after call flush we can still use $item as 'selected object' in
// another $em calls and it will have actual (some = 'someText') values
无需额外调用更新数据库。EntityManager 使您的模型在 flush() 上保持同步
public function updateAction($id)
{
$em = $this->getDoctrine()->getManager();
$product = $em->getRepository('AppBundle:Product')->find($id);
if (!$product) {
throw $this->createNotFoundException(
'No product found for id '.$id
);
}
$product->setName('New product name!');
$em->flush();
return $this->redirectToRoute('homepage');
}
见http://symfony.com/doc/current/book/doctrine.html#updating-an-object