2

我正在使用 Symfony2 + Doctrine 做我的第一个项目,目前正在尝试实现替换记录。但是,当我尝试打电话时

    $em->save($product); 

或者

    $em->replace($product);

(代替)

    $em->persist($product);

我遇到致命错误。所以我开始四处寻找,试图找到 persist() 方法,这样我就可以看到还有哪些其他方法可用。我搜索了vendors/doctrine 目录的全部内容,找不到任何对persist 或flush 方法的引用。这些到底在哪里?我尝试按照代码进行操作,但很快就迷路了。

所以主要问题是:如何在 Symfony2 中使用学说替换()?

子问题:persist() 和 flush() 方法在哪里?找不到它们本身就令人沮丧。

4

2 回答 2

3

万一其他人想知道,请尝试调查:

$em = $service->get('doctrine.orm.entity_manager');
$entity = $em->merge($entity);
$em->flush();

文档中,Doctrine\ORM\EntityManager::merge()

将分离实体的状态合并到此 EntityManager 的持久性上下文中,并返回实体的托管副本。传递给合并的实体将不会与此 EntityManager 关联/管理。

应该为您解决问题。

于 2013-12-18T02:24:20.847 回答
0

我不认为replace()Symfony 支持 Doctrine 的方法,或者至少它不能通过 EntityManager 访问。

如果您需要更新现有实体,则只需按照此处所述进行操作 - http://symfony.com/doc/current/book/doctrine.html#updating-an-object

至于persist()flush()方法 - 你可以在vendor/doctrine/common/lib/Doctrine/Common/Persistence/ObjectManager.php

于 2013-09-12T20:42:07.697 回答