2

私は Symfony2 + Doctrine で最初のプロジェクトを行っており、現在、レコードの置き換えを実装しようとしています。しかし、私が電話しようとすると

    $em->save($product); 

また

    $em->replace($product);

(それ以外の)

    $em->persist($product);

致命的なエラーが発生します。そこで、persist() メソッドを探して、他にどのようなメソッドが利用できるかを調べてみました。vendors/doctrine ディレクトリの内容全体を検索しましたが、永続化またはフラッシュ メソッドへの参照が見つかりませんでした。これらは一体どこにありますか?コードをたどってみましたが、すぐに迷子になりました。

主な質問: Symfony2 で doctrine を使用して replace() を実行するにはどうすればよいですか?

サブ質問: 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

Doctrine のreplace()メソッドが Symfony でサポートされているとは思わないか、少なくとも 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 に答える