2

生成されたクラスではなく、デフォルトで継承されたクラスを使用するよう Doctrine2 Entity Manager に指示するにはどうすればよいですか?

私の新しい sf2 アプリでは、既存のデータベースからすべてのエンティティを/src/Package/Bundle/DataBundle/Entity生成しました。もちろん、フォームも生成したいので、__toString()それらに入れたくない外部キー関係メソッドが必要です。生成されたファイルは上書きされるためです(はい、追加のファイルにもバックアップされるため、変更は失われませんが、ファイルを手動でマージすることは私が望んでいるものではありません)。

/src/Package/Bundle/DataBundle/Modelそのため、エンティティからすべてを継承するために新しいクラスを追加しましたが、__toString()メソッドと、将来的には他の微調整も必要です。しかし今、私が呼び出すと 、代わりに..$entity = $em->getRepository('PackageDataBundle:Customer')->find($id);のインスタンスを取得します。/src/Package/Bundle/DataBundle/Entity/Customer/src/Package/Bundle/DataBundle/Model/Customer

すべてのカスタム作業は継承されたクラスで行われ、生成されたものは「基本」クラスであり、スキーマの更新時にいつでも更新でき、それ以外の場合は変更されません..

このための設定があることを願っています..

おまけとして、命名規則を変えたいと思います。Model「抽象的」に生成さEntityれたものと実際に使用されたものを使用します。

ありがとう。

4

2 に答える 2

2

すべてのカスタム作業は継承されたクラスで行われ、生成されたものは「基本」クラスであり、スキーマの更新時にいつでも更新でき、それ以外の場合は変更されません..

あなたが説明した目的のためには、Propel ORMを使用する必要があります- Symfony-1.4 ではそうでしたが、Symfony-2.0 では Propel 1.6 でさらに柔軟になりました。十分に文書化されており、簡単にインストールでき、 Symfony-2.0 内で自然に使用されます

于 2012-08-06T13:13:31.137 に答える
0

おそらく私はあなたの問題を誤解していましたが、Propel から Doctrine に移行したことで、その「汚い」自動生成コードを私のロジックから除外する方法がないことに失望しました。あなたにとってどれだけ重要かはわかりませんが、私は現在、そのような生成スタイルを実装する簡単なバンドルを作成しています。

$ app/console doctrine:generate:entities СompanySomeBundle --propel-style=true
Generating entities for bundle "СompanySomeBundle"
  > backing up User.php to User.php~
  > generating Сompany\SomeBundle\Entity\Base\User
  > generating Сompany\SomeBundle\Entity\User

https://github.com/madesst/MadesstDoctrineGenerationBundle

PS: 私の英語でごめんなさい =/

于 2013-07-24T13:52:58.127 に答える