Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony2使用哪种ORM?_Orm_Symfony_Doctrine Orm_Propel - Fatal编程技术网

Symfony2使用哪种ORM?

Symfony2使用哪种ORM?,orm,symfony,doctrine-orm,propel,Orm,Symfony,Doctrine Orm,Propel,我正在用Symfony2启动一个新项目,但我不确定该选择哪个ORM。我听说Doctrine2有些不好的地方,尤其是在继承和DQL方面。这似乎是从死里复活,但另一方面,没有保证它会永远持续下去 您有什么建议吗?我可以告诉您,Propel是最适合与Symfony2一起使用的ORM。它工作正常,没有计划停止在上面的活动。Propel2项目正朝着比Propel 1.6.x更好的方向发展(这是非常棒的) 不要犹豫使用推进,包括Sensio实验室在内的许多用户都在使用它 以下是Symfony2的推进文档:

我正在用Symfony2启动一个新项目,但我不确定该选择哪个ORM。我听说Doctrine2有些不好的地方,尤其是在继承和DQL方面。这似乎是从死里复活,但另一方面,没有保证它会永远持续下去


您有什么建议吗?

我可以告诉您,Propel是最适合与Symfony2一起使用的ORM。它工作正常,没有计划停止在上面的活动。Propel2项目正朝着比Propel 1.6.x更好的方向发展(这是非常棒的)

不要犹豫使用推进,包括Sensio实验室在内的许多用户都在使用它

以下是Symfony2的推进文档:

注意:关于堆栈交换有一个相关主题:

有几点我忘记了:

  • 行为是推进的一部分,没有人在教义2中提供。这意味着Propel正式支持他们并提供支持/改进。我不太清楚
  • 推进真的很快。我同意Doctrine2比Propect更适合大规模插入
  • Propel已经有10年的历史了,非常稳定,很多人都在使用它
  • 没有其他语言可以学习
  • 得益于流畅的API,Propel2实际上是面向对象的
  • Doctrine2 ORM与ODM不共享相同的API,因此您可以像D2 ORM和ODM一样将推进与D2 ODM一起使用,这里没有专业人士
  • Propel使用特定平台的代码生成,因此它针对您的需求进行了优化,并且由于运行时和生成器部件,速度非常快
我喜欢Doctrine2中的一些观点:

  • 注释
  • 完整的代码,因为它是最近的
问题不在于DBAL原则,而在于ORM原则。Propel2正在改进整个推进1.6.x代码

哦,而且我很长一段时间都在使用Doctrine2;)


我可以告诉你,spreep是最适合与Symfony2一起使用的ORM 我不同意。Doctrine2是Symfony的原生ORM。它包含在标准Symfony发行版中,可在以下位置获得:

Symfony文档主要描述与条令相关的工作,而不是推进。所以,我不认为推进选择太明显。我认为你真的应该考虑后果。我更喜欢教条


以下是一个由Propel bundle支持的选项列表:

我个人的选择是原则2,原因如下:

  • 从概念上讲,这很容易理解。使用实体和实体管理器非常简单。我喜欢实体不需要扩展任何基本模型类的方式(如原则1)

  • 它现在是Symfony2的标准ORM。虽然它可能没有得到Symfony2的正式“认可”,但大多数人都在使用它,因此在线上有大量的信息。其价值是巨大的

你提到你听说过“Doctrine2的坏处”——重要的是你要意识到没有一个ORM是完美的。我遇到了一些问题,但只要你有创造性地思考,你就能找到解决办法。有时候,这种解决方案意味着编写原始SQL,不管ORM纯化论者会说什么。我没有遇到过后悔使用第二条原则的情况


我花了很多时间看《推进》,但我就是不喜欢它的工作方式。这并不是说它是一个程序设计糟糕的库,但对我个人来说,它并不适合。但是,由于每个开发人员都是不同的,所以我能提供的最好建议是您查看这两个库的文档和使用示例。因为您将是使用它的人,而不是我们,所以您需要选择您认为最能从中受益的库。

没有任何东西是本机的,并且Symfony2核心(在2.1版本中)的教义将被删除,请阅读Fabien Povertier的最后一篇博文。@William DURAND您指的是什么博客?无论如何,如果这是真的,那么现在(2.x分支)理论肯定是本土的。官方文件是关于教义的,而不是任何其他的ORM。此外,《条令》的作者乔纳森·H·瓦格曾在Sensio实验室工作过一段时间。这一篇:除了为《推进》记录的一章之外,《条令》与《条令》无关。伟大的捆绑包是不可知论者,像符咒一样与推进一起工作。我知道乔纳森在SL工作,如果他们雇用我,你会改变主意吗?我不这么认为;)我并不是说Doctrine2不适合Symfony2,但在现实生活中使用它是一种痛苦。基本用法是可以的,但如果你想做更多的事情,那就很难了。@William DURAND:它有没有说2.1中的教义被删除了?我错过这部分了吗?Fabien只是说,Symfony的ORM只是可选的依赖项。是的,明天IRC会议上将讨论这个问题。我邀请你来。AFAIK原则和推进将成为Symfony2“桥梁”的一部分。这个问题是关于选择ORM,而与框架无关。据我所知,只是选择ORM作为一个独立的工具。这与Symfony2是不可知论的非常相关。正如我所说的,几乎所有的官方捆绑包都是不可知论者,使用ORM、ODM、Propel、Mandango等原则也不是问题。你可能应该在你的帖子中披露你与Propel的联系。我记得在学习s1时,我看到了TUT中列出的一些备选方案,并采纳了一些。我很遗憾,b/c如果社区使用例如条令,那么所有的博客示例和评论都将围绕条令展开。所以,即使Propel更适合(我不知道),从实用角度来看,D仍然是一个更好的选择。。不知道您在哪里看到DataMapper DP比ActiveRecord方法更简单。我同意实体很简单,但限制太多。问题是,当你想要构建真实的东西时,你必须理解D2背后的复杂性以及它是如何工作的,这并不容易。即使你想构建复杂的东西,ActiveRecord也非常简单。我对Doctrine 1中的ActiveRecord很熟悉。我同意它使用起来很简单,但在很多情况下它的效率并不高