0

1 対多の関係を持つ 2 つのエンティティがあるとします。それらを EntityOne および EntityMany と呼びます。

EntityMany をデータベースに保存したい。EntityOne のインスタンスはありませんが、必要な entity_one_id は知っています。

データベースから EntityOne のインスタンスを取得せずに EntityMany を保存する方法はありますか?

保存された EntityMany で何もしたくありません。保存したいだけです。

この状況で EntityMany を保存できた唯一の方法は、データベースから EntityOne を取得し、$entity_many->setEntityOne($entity_one) を実行してから EntityMany を永続化することです。

それは機能しますが、データベースに必要なのはIDだけの場合、EntityOneの不要なクエリのようです。

new EntityOne() を単純にインスタンス化し、ID を設定して (自動生成された整数 ID のセッターを追加する必要がありました)、その保存されていないインスタンスを使用しようとしましたが、Doctrine はいくつかのエラーに満足していませんでした。

4

1 に答える 1

1

EntityManager にはメソッド「getReference」があります。これを使用して目標を達成できます。次のようになります。

$entityRef = $em->getReference('EntityOne', $entityOneId);
$entityMany->setEntityOne($entityRef);
// ...

ここを見て:

http://docs.doctrine-project.org/en/latest/reference/configuration.html#proxy-objects

于 2013-01-20T16:51:25.763 に答える