Symfony2をベースにしたカスタムCMSを作成しており、現在はユーザシステム上で作業しています。私たちのバンドルでは、サイトがユーザーデータに必要とする最も一般的なすべてのプロパティと、BaseSiteUser
を拡張し、エンティティのテーブルを定義するSiteUser
を含むBaseSiteUser
が定義されています。Symfony2の別のバンドルのエンティティを上書きする
新しいプロジェクトの名前空間でより具体的なものを作成してSiteUser
エンティティを上書きするか、新しいプロジェクトの名前空間を指定しない場合はデフォルトのものを使用するという考えがありました。
当社のバンドル・アーキテクチャでは、多少のようになります。
OurCompany
CMSBundle
Entities
BaseSiteUser.php
SiteUser.php
CustomerName
CustomerProjectBundle
CMSBundle
Entities
SiteUser.php
私たちの問題はCustomerName\CMSBundle
で定義されたSiteUser
がOurCompany\CMSBundle
に代わり一つで使用されているように、私たちはモデルを構築することができないということです。代わりに、我々はこのエラーを取得:
[Doctrine\DBAL\Schema\SchemaException]
The table with name 'siteuser' already exists.
は、我々はdocumentationに相談しようとしたが、その部分は、まだカバーされていません。 Webを検索しても解決策はありませんでした。
モデルを定義するために注釈方法を使用しています。
おかげで、それが私たちのバンドルは、現在設定されている方法です。継承自体は正常に動作しますが、エンティティをオーバーライドすることは、私たちが苦労していることです。 – Kaivosukeltaja
'OurCompany \ CMSBundle \ SiteUser'エンティティを抽象クラスとして設定することができます。 –
しかし、デフォルトのエンティティを取得する場合は、各バンドルに空の 'SiteUser'エンティティを作成する必要があります。 –