为什么使用Doctrine而不是CakePHP的标准数据库ORM?

mon*_*rid 14 doctrine cakephp doctrine-orm

我即将开始使用CakePHP 2.2开发一个新的Web项目,之前主要使用Zend Framework 1.

初看起来,我非常喜欢CakePHP处理模型和底层数据库表的方式,特别是关于快速设置一对多和多对多关系以及最小的麻烦.坦率地说,与我以前在Zend Framework中做事情相比,似乎有一股清新的气息.

然而,在使用Zend Framework的过去几年中,我曾考虑使用Doctrine来提供ZF相当笨拙的模型关系.教义看起来非常强大和灵活.

所以现在我想知道,在我深入了解我的新CakePHP项目之前,我是否还应该考虑将Doctrine用于我新选择的框架?与CakePHP的内置ORM和数据库功能相比,Doctrine带来了什么优势和劣势(没有双关语!)?

ADm*_*mad 12

如果作为一个整体使用CakePHP效果最好.在您的具体情况下,如果您愿意,可以使用Doctrine而不是Cake的ORM,但是您将丢失很多蛋糕功能.例如.FormHelper使用模型的模式"疯狂地"做很多事情,比如为字段等猜测正确的输入类型,在验证失败时自动在表单中的相应字段下面显示错误消息等.

正如您所评论的那样,您对Doctrine的经验也不多,所以我建议您坚持使用CakePHP的ORM,只有在您发现它不适合您的需求时才寻找选项.

  • 自从我最初回答这个问题以来,情况发生了很大变化.CakePHP 3.x中的ORM已被重写,与以前的版本相比有了很大的改进.它甚至可以单独使用https://github.com/cakephp/orm反过来也是可能的:使用另一个与CakePHP的ORM库,但我个人认为没有任何理由这样做.CakePHP 3.x的ORM非常棒. (2认同)

Dan*_*iro 5

如果你已经使用过 Doctrine 和 CakePHP 的 ORM,你可以根据主要的原因来决定改变:

  • 什么会给你更多的生产力?
  • 什么会给你更多的可维护性?
  • 什么会让你减少学习曲线?

就我个人而言,我会选择 Doctrine,因为它确实针对一个问题。