我正在使用Symfony2开始一个新项目,我不确定选择哪个ORM。我听说过关于Doctrine2的一些不好的事情,特别是在继承和DQL方面。似乎Propel已经从死里复活了,但另一方面,它并不能保证会永远存在。
你有什么建议吗?
答案 0 :(得分:11)
我可以告诉你Propel是最适合与Symfony2一起使用的ORM。它工作正常,没有计划停止活动。 Propel2项目正在向Propel 1.6.x(它真的很棒)的方向发展。
不要犹豫使用Propel,包括Sensio Labs在内的许多用户都在使用它!
以下是Symfony2的Propel文档:http://www.propelorm.org/documentation/#working_with_symfony2
注意:Stack Exchange上有一个相关主题:https://softwareengineering.stackexchange.com/questions/48760/should-i-choose-doctrine-2-or-propel-1-5-1-6-and-why/117078#117078
我忘记了一些观点:
我在Doctrine2中喜欢的一些观点:
问题不在于Doctrine DBAL,而在于Doctrine ORM。 Propel2正在改进整个Propel 1.6.x代码。
哦,我长期使用Doctrine2了;)
答案 1 :(得分:4)
我个人的选择是Doctrine 2,原因如下:
从概念上讲,它很容易理解。与实体和实体经理合作很简单。我喜欢实体不需要扩展任何基础模型类(如在Doctrine 1中)。
现在它是 Symfony2的标准ORM。虽然可能没有被Symfony2正式“认可”,但大多数人都在使用它,因此网上有大量的信息。这个价值非常大。
你提到你听说过“关于Doctrine2的坏事” - 重要的是你要意识到ORM不会是完美的。我遇到了一些问题,但只要你有创造性思考,你就可以找到解决方案。有时,该解决方案意味着编写原始SQL,无论ORM纯粹主义者可能会说什么。我没有遇到任何我后悔使用Doctrine 2的情况。
我花了很多时间看Propel,但我只是不喜欢它是如何工作的。这并不是说它是一个编程不好的库,但对我个人来说这不太合适。但由于每个开发人员都不同,我可以提供的最佳建议是查看两个库的文档和用法示例。既然你将成为使用它的人,而不是我们,你需要选择你认为最有益的库。
答案 2 :(得分:1)
我可以告诉你Propel是最适合与Symfony2一起使用的ORM 我不同意。 Doctrine2是Symfony的 native ORM。它包含在标准的Symfony发行版中:http://symfony.com/download
Symfony文档描述了主要使用Doctrine而不是Propel。所以,我认为Propel的选择不太明显。我认为你应该真正减轻后果。我更喜欢Doctrine。
以下是Propel捆绑包支持的选项列表:http://www.propelorm.org/cookbook/symfony2/working-with-symfony2.html