2012-08-06 35 views
2

如何告诉Doctrine2实体管理器默认使用继承类而不是生成的类?在sf2/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作为实际使用的一个

谢谢。

回答

2

我想要从sf1开始的行为,其中所有自定义工作都在继承的类中完成,而生成的工作是“基本”类,可以随时更新模式更新并且aren “T感动否则..

为目的,你描述你应该使用Propel ORM - 它是如此的Symfony-1.4,变得更加灵活Symfony的-2.0与1.6的Propel。这是well documentedeasily installednaturally used内的Symfony-2.0

+0

我知道,从过去的推进,却得到了非常习惯学说及其DQL SF1为MySQL内。我也知道使用MongoDB的早期sf2项目的教义,我不需要将我的映射从现有数据库转换回来。所以我会在下一个项目中看看propel,当有更多时间进入新的框架:) – con 2012-08-06 13:49:07

0

也许我误解你的问题,但会从行走教义我还感到失望的是没有办法保持这种“脏”自动生成的代码了我的逻辑。 我不知道现在对您来说有多重要,但我正在编写一个实现这种生成风格的简单包。

$ 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:对不起,我的英语=/

+0

看起来很有前途,你能否在你的github项目中提供英文文档? – con 2013-07-24 16:43:04

+0

当然,稍后 – 2013-07-24 18:28:06

+0

@Maksim Ustinov我正在使用你的包,一段时间它是伟大的!但自从过去6个月更新供应商以来,您的捆绑软件现在会抛出一个错误。我已经评论过你的GitHub,你能否就此回复我,我喜欢你的软件包,并且真的想继续使用它。 – Adam 2015-05-06 04:22:29