教義にこのようなものを持たせる方法はありますか?
class Entity {
/**
* @Column(name="related_entity_id")
*/
private $relatedEntityId;
/**
* @ManyToOne(targetEntity="RelatedEntitiy")
* @JoinColumn(name="related_entity_id", referencedColumnName="id")
*/
private $relatedEntity;
}
私がしたいこと私はこのようなことをします:
Entity :: setRelatedEntityId($ someId)を呼び出し、エンティティを永続化し、Entity :: getRelatedEntity()を呼び出して、エンティティに関連エンティティを返すようにします。
関連するエンティティは、厳密に制限され、実行時に動的に拡大することはないテーブルから選択されるため、関連するエンティティIDの数には限りがあります。
新しいエンティティを作成するときに、関連するエンティティIDを設定したいのですが、データベースから関連するエンティティ全体をフェッチする必要はありません。
これをテストできる限り、これは機能しません。relatedEntityIdを設定したが、relatedEntityを設定しなかった場合、基本的に関係が確立されていないため、Doctrineはrelated_entity_id列を自動的にnullに設定します。
私もこのようなことをしようとしました:
relatedEntityIdプロパティを削除し、
Entity::setRelatedEntity(new RelatedEntity($relEntId))
RelatedEntityのコンストラクターはIDを設定しますが、他の値は設定しません。RelatedEntityを永続化したくありません(その値は指定された$ relEntIdのDBにすでに設定されています)が、永続化されていないエンティティがあるため、今回はDoctrineがフラッシュ時にエラーを通知します。
基本的に、私がやりたいのは、関連するエンティティのID以外は何も知らずに関係を作成することです。これを行うことができる他の方法がある場合は、共有してください。
前もって感謝します
編集:
回避策を見つけました。RelatedEntitiesは不変オブジェクトの限定されたセットになるため、次のことを行いました。
- entityManagerを使用して、すべてのRelatedEntitiesを検索します。
- 新しいエンティティを作成するオブジェクトにリストを挿入します
- 新しいエンティティを作成するときは、リストからRelatedEntitiesの1つをRelatedEntityとして選択します
誰かがもっと良いものを思いついた場合に備えて、質問を1日か2日開いたままにしておきます。