2

我如何告诉 Doctrine2 实体管理器默认使用继承的类,而不是生成的?

在我的新 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..

我想要 sf1 的行为,其中所有自定义工作都在继承的类中完成,生成的是“基”类,可以在模式更新时随时更新,否则不会被触及..

我希望对此有一些配置..

也许作为奖励,我想改变我的命名约定:Model作为“抽象”生成一个,并Entity作为实际使用的一个

谢谢。

4

2 回答 2

2

我想要 sf1 的行为,其中所有自定义工作都在继承的类中完成,生成的是“基”类,可以在模式更新时随时更新,否则不会被触及..

出于您描述的目的,您应该使用Propel ORM - 在 Symfony-1.4 中就是如此,并且对于带有 Propel 1.6 的 Symfony-2.0 变得更加灵活。它在 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 回答