在sf2 / doctrine2中使用生成的实体作为“基类”

时间:2012-08-06 09:42:46

标签: symfony doctrine-orm generator

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

在我的新sf2应用程序中,我将现有数据库中的所有实体生成到/src/Package/Bundle/DataBundle/Entity - 当然我也希望生成表单,所以我需要我的外键关系{{1}方法,我不想把它们放到那些生成的文件中,因为它们被覆盖(是的,它们也会被备份到一个额外的文件中,所以我的更改不会丢失,但手动合并文件不是我想要的)。

所以我添加了新的类到__toString()继承所有实体,但是使用/src/Package/Bundle/DataBundle/Model方法,并且未来肯定会进行其他一些调整。但是现在,当我致电__toString()时 - 我得到$entity = $em->getRepository('PackageDataBundle:Customer')->find($id);而不是/src/Package/Bundle/DataBundle/Entity/Customer的实例..

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

我希望有一些配置..

也许作为奖励,我想让我的命名惯例变成:将/src/Package/Bundle/DataBundle/Model/Customer作为“摘要”生成一个而Model作为实际使用的

感谢。

2 个答案:

答案 0 :(得分:2)

  

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

为了您所描述的目的,您应该使用Propel ORM - 在Symfony-1.4中就是这样,并且对于使用Propel 1.6的Symfony-2.0变得更加灵活。 Symfony-2.0中的well documentedeasily installednaturally used

答案 1 :(得分: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:抱歉我的英文= /