我来自Codeigniter MVC背景,我们已经使用了一段时间了。现在是时候为一个大项目推出我们自己的框架了,但是我们现在来到数据库部分,并立即感到有些困惑。
在Codeigniter中,我们已经将ActiveRecord用于所有SQL数据库连接,这种连接运行良好,但由于它不是一个单独的部分,我们正在寻找ORM解决方案,在我们的模型中尽可能少地编写代码来获取我们的来自数据库的数据。
我们已经回顾了包括Doctrine2和Propel在内的主要替代方案,但我们对这些配置文件的实际情况以及这些库的实际范围有多么惊恐。
从维护方面来看,选择一个需要在更多文件中进行编辑的ORM,然后在推出架构更改时显而易见的MVC,这是否真的很有意义?
答案 0 :(得分:4)
说实话,推进和学说可能是目前市场上最好的php ORM,我使用的是与symfony框架捆绑的推进,但是一旦你覆盖了文档,它确实产生了巨大的差异,两个ORM都知道如何当你需要原生的sql时,要远离你的方式。我建议你从两个中选择一个(推进/学说),只需投入时间并完成文档,最终结果将是值得的。
答案 1 :(得分:2)
嗯,实际上对于Propel,您在更改架构时不必编辑许多文件(如果您坚持使用基本的ORM)。您只需更新数据库模式文件(schema.xml),然后运行propel-gen,该工具将在您指定的文件夹(build.properties)中为您创建必要的Propel类。
om文件夹中的BaseXXX类永远不应该被编辑,因为每次更改模式并运行propel-gen时它们都会被覆盖。只需将您的业务逻辑添加到主文件夹中的类(默认情况下继承Base类),它们只创建一次,之后不会被propel-gen触及。
答案 2 :(得分:1)
使用doctrine,你基本上可以只依赖schema.yml文件(YAML格式)。使用该文件,doctrine能够生成SQL,模型类,过滤器,....一切(当然,如果你愿意,你可以修改文件,但在大多数场景中你都不会)