私はブログアプリケーションを持っているとしましょう。
著者は、ウェブ上の既存の画像のURLへのリンクを付けるか、新しい画像をアップロードすることで、複数の画像を投稿に追加できます。doctrine 2で複雑なエンティティの関連付けクエリを実行するにはどうすればよいですか? (仮想エンティティ)
画像(アップロードされたURLまたはURL)からその画像を使用するすべての投稿に、特定の投稿からその投稿内のすべての画像(たとえば、削除する可能性があります)違法な画像や投稿者が投稿を修正するまでそれらを使用する投稿を中断する)。
しかし、私はアップロードされたイメージとURLイメージのために異なるエンティティを使用します - アップロードされたイメージは、URLイメージよりイメージに関するより多くのデータを持っています。
編集された投稿を保存するたびに、より複雑なコードになります。特定の画像(実行する必要がある投稿のすべての画像)を確認し、作成または更新する必要がありますレコードを作成し、ポストエンティティの関係フィールドに割り当てます。
だから... ...私はUploadedImage
とUrlImage
エンティティを持っていると仮定すると、私はそれをアップロードまたはURLがあれば、それを取得各画像ごとにチェックしpost
エンティティにsetImages
方法を持っていることについて考え、その後、setUploadedImages
かのいずれかを呼び出しますsetUrlImages
。
しかし、同じ方法でイメージをロードするには、ある種の仮想リポジトリimages
が必要になります。
それは少し複雑に聞こえる、と私は疑問に思っ:
- どのように私は(そのリポジトリとすべてで)仮想教義実体を持つことができますか?
- 良いデザインはありますか?
[継承マッピング](http://www.doctrine-project.org/docs/orm/2.1/ja/reference/inheritance-mapping.html)の使用を検討しましたか? – Orbling
@Orblingどのように?そして、それはどのように各タイプで何をすべきかを決める "問題"を解決するでしょうか? – Doron
まあ、継承マッピングを使用すると、両方の型を表すスーパークラスを持つことができます。そして、それらを一緒に扱うことができます。彼らはサブタイプに応じて同じ方法を持ち、異なることをすることができます。 – Orbling