1

「 Addressable」である(アドレスを持つことができる)3つのエンティティがあります。

配送先
お客様
配送センター

すべてのAddressableエンティティもGeolocatable (緯度と経度を持つ) ですが、トラック ポイントルート ポイント(緯度と経度の順序付けられたシーケンス) のように、 GeolocatableであるがAddressableではないエンティティがあります。

doctrine 2 (Symfony2 と YAML マッピングを使用) でこれを達成するための最良の方法は何ですか?

私の質問は次のとおりです。この問題に対する最善のアプローチは何ですか? マッピングされたスーパークラス? 単一テーブルの継承?マルチテーブル継承?教義のドキュメントを読んでも、これに最適なものはわかりませんでした。

それが重要な場合、私はPostgreSQLを使用しています。

4

2 に答える 2

3

これは間違いなく、継承よりも合成の方が適している状況です。

問題を説明するために使用する言語は有益です。「Addressable」を「持つことができる」「住所」と定義します。これは、「顧客は住所のタイプです」とは異なります。後者の場合、継承がより理にかなっています。

レベル 0 では、アソシエーションを使用するだけです (Address OneToOne Geolocation、Customer OneToOne Address、RoutePoint OneToOne Geolocation など)。

Address を持つものに対して一連の操作を実行する場合は、Addressable というインターフェイスを作成し、Customer に実装してもらいます。

PHP 5.4 を実行している場合は、トレイトを使用してこれらのインターフェイスの実装を DRY できます。

于 2013-07-19T21:11:32.407 に答える