2

私たちは Symfony2 に基づいたカスタム CMS を作成しており、現在ユーザー システムに取り組んでいます。私たちのバンドルはBaseSiteUser、サイトがユーザー データに必要とする可能性のある最も一般的なプロパティをすべて含む と、エンティティのテーブルをSiteUser拡張および定義する を定義しています。BaseSiteUser

アイデアは、個々のプロジェクトごとSiteUserに、新しいプロジェクトの名前空間でより具体的なものを作成してエンティティを上書きするか、新しいものを指定しない場合はデフォルトのものを使用するというものでした.

バンドル アーキテクチャは次のようになります。

OurCompany
  CMSBundle
    Entities
      BaseSiteUser.php
      SiteUser.php

CustomerName
  CustomerProjectBundle
  CMSBundle
    Entities
      SiteUser.php

私たちの問題は、の代わりに でSiteUser定義されたが使用されるようにモデルを構築できないことです。代わりに、次のエラーが発生します。CustomerName\CMSBundleOurCompany\CMSBundle

  [Doctrine\DBAL\Schema\SchemaException]
  The table with name 'siteuser' already exists.

ドキュメントを参照してみましたが、その部分はまだカバーされていません。Web を検索しても解決策はありませんでした。

モデルの定義には注釈メソッドを使用しています。

4

2 に答える 2

0

以前の回答を間違っているとして削除しました:)。の実装を確認しFOSUserBundleました。彼らは継承マッピングを使用しています。したがって、コアでCMSBundle定義BaseSiteUser@MappedSuperclass、オーバーライドされたバンドルで単に拡張しBaseSiteUserます。

于 2012-04-13T14:08:22.497 に答える
0

この解決策はうまくいくはずだと思います(疑似コード):

当社   
  CMSバンドル
    エンティティ

      /**
      * ベースサイトユーザー
      *
      * @ORM\Entity(repositoryClass="OurCompany\CMSBundle\Repository\SiteUserRepository")
      * @ORM\Table(name="siteuser")
      * @ORM\InheritanceType("SINGLE_TABLE")
      * @ORM\DiscriminatorColumn(name="discr", type="string")
      *
      * 明示的な識別マップを使用しないでください (自動的に生成されます) !!!
      * @ ORM\DiscriminatorMap({"basesiteuser" = "BaseSiteUser", "siteuser" = "SiteUser"})
      */
      BaseSiteUser.php

      /**
      * サイトユーザー
      *
      * @ORM\Table(name="siteuser")
      */
      SiteUser.php => class SiteUser extends CustomerName\CMSBundle\Entities\SiteUserCustom

顧客名   
  顧客プロジェクトバンドル   
  CMSバンドル
    エンティティ
      /**
      * サイトユーザーカスタム
      *
      * @ORM\Table(name="siteuser")
      */
      SiteUserCustom.php => class SiteUserCustom extends OurCompany\CMSBundle\Entities\BaseSiteUser

バンドルをAppKernel.phpに登録することを忘れないでください。SiteUserCustomで新しいフィールドを定義できるようにする場合は、 CustomerNameCMSbundleをエンティティ マネージャー構成に追加します。

オーム:
  entity_managers:
    デフォルト:
      マッピング:
        OurCompanyCMSbundle: ~
        顧客名CMSbundle: ~
于 2013-04-30T14:48:09.830 に答える