我正在寻找有关如何从EER图开始在Symfony2中开发Web应用程序的建议。我很欣赏你认为合理的开发方式的逐步入门。
另外,有什么我应该注意避免以后的失败吗?
请建议我使用的任何工具。
更新:让我澄清一下。说我有下面的EER图。一个问题是:是否有工具将其转换为symfony实体类,并且关于关系的正确注释(1:N或N:M)?
进一步澄清。
假设我已经开发了如上所述的EER图。
通过Workbench Export,我可以获取sql查询来创建相应的mySQL表;因此我可以使用Doctrine / Symfony2的app/console doctrine:mapping:import
来获取我可能用来生成我的实体类的模式。
然而,这一切并不是我想要的,因为我想避免那种逆向工程。所以,问题是:有没有办法将EER图导出到实体类直接,并将mySQL表创建为最后一步?
如果Workbench / Doctrine / Symfony无法实现这一点,那么我可以使用不同的工具组合吗? (Zend; Ruby on Rails,......)
更新,看来Skipper Skipper正在寻找我想要的东西。不幸的是它不是免费的/开源的(确实有点贵)。 Skipper有一个导出到ORM 工具,它从EER图中为Doctrine(或其他ORM)创建实体类。我需要检查它在关系和注释方面的表现。
答案 0 :(得分:0)
您可以从您的EER图开始,定义您的应用程序将需要哪些学说实体以及它们之间的关系(注意:如果关系不容易发现,您可能需要一个类图)。然后我建议遵循Symfony明确定位的MVC设计模式:
希望这有帮助。
答案 1 :(得分:0)
Ocramius在Doctrine ORM模块(用于Zend Framework)中实现了可视化实体图的工具。可视化图表以配置对象关系真的很有帮助......
我在Zend中喜欢它,并且经常使用它!所以当我开始学习Symfony时,我真的很想念它...我决定找到一种方法来做同样的事情......我做到了! (它使用yuml.me API)
我分享了这个包:
https://packagist.org/packages/onurb/doctrine-yuml-bundle
只需3个步骤即可轻松完成安装......试试吧:)
答案 2 :(得分:0)
我创建了一个非常好的脚本来执行此操作。它将EER图转换为符合symfony的Doctrine 2实体,它允许您完全自定义它的完成方式。
第一步是下载此工具(https://github.com/mysql-workbench-schema-exporter/doctrine2-exporter)。我刚刚通过composer安装它(按照github上的说明)
接下来,.mwb文件与我建议您制作的脚本位于同一目录中。
接下来,我创建了一个这样的脚本来自定义该程序的设置。
<强> autodoctrine.sh 强>
php vendor/bin/mysql-workbench-schema-export youreerdiagram.mwb ./entities << EOF
`#Export to Doctrine Annotation Format` 1
`#Would you like to change the setup configuration before exporting` y
`#Log to console` y
`#Log file` doctrineconvert.log
`#Filename [%entity%.%extension%]`
`#Indentation [4]`
`#Use tabs [no]`
`#Eol delimeter (win, unix) [win]`
`#Backup existing file [yes]`
`#Add generator info as comment [yes]`
`#Skip plural name checking [no]`
`#Use logged storage [no]`
`#Sort tables and views [yes]`
`#Export only table categorized []`
`#Enhance many to many detection [yes]`
`#Skip many to many tables [yes]`
`#Bundle namespace []`
`#Entity namespace []`
`#Repository namespace []`
`#Use automatic repository [yes]`
`#Skip column with relation [no]`
`#Related var name format [%name%%related%]`
`#Nullable attribute (auto, always) [auto]`
`#Generated value strategy (auto, identity, sequence, table, none) [auto]`
`#Default cascade (persist, remove, detach, merge, all, refresh, ) [no]`
`#Use annotation prefix [ORM\]`
`#Skip getter and setter [no]`
`#Generate entity serialization [yes]`
`#Generate extendable entity [no]` y
`#Quote identifier strategy (auto, always, none) [auto]`
`#Extends class []`
`#Property typehint [no]`
EOF
这将为您创建教义实体。我的特定设置启用了可扩展实体,因为这样您可以反复运行此命令而不覆盖特定于模型的代码。您只需将代码放在扩展基类的类中。这将在数据库中创建一个您将要忽略的鉴别器列,但它对于逻辑分离是值得的。
接下来,您只需运行/vendor/bin/doctrine orm:schema-tool:create
控制台命令,就像在symfony教程中一样,让它从教条文件中创建数据库!让我知道这是否足够清楚。
<强>参考文献:强>
http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/tools.html