【问题标题】:Why use Doctrine instead of CakePHP's standard database ORM?为什么使用 Doctrine 而不是 CakePHP 的标准数据库 ORM?
【发布时间】:2012-09-19 20:44:06
【问题描述】:

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

乍一看,我真的很喜欢 CakePHP 处理模型和底层数据库表的方式,尤其是在快速设置一对多和多对多关系方面,并且尽量减少麻烦。坦率地说,与我以前在 Zend Framework 中做事的方式相比,这似乎是一股新鲜空气。

然而,在过去几年中,在使用 Zend Framework 时,我曾研究过使用 Doctrine 来提供 ZF 相当笨拙的模型关系。 Doctrine 在我看来非常强大和灵活。

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

【问题讨论】:

    标签: cakephp doctrine doctrine-orm


    【解决方案1】:

    CakePHP 作为一个整体使用效果最好。在您的特定情况下,尽管您可以根据需要使用 Doctrine 代替 Cake 的 ORM,但您会失去很多 cake 的功能。例如。 FormHelper 会“神奇地”做很多事情,比如使用模型的模式猜测字段的正确输入类型等,在验证失败时自动在表单中的适当字段下方显示错误消息等。

    正如您评论的那样,您对 Doctrine 也没有太多经验,因此我建议您坚持使用 CakePHP 的 ORM,并且仅在您发现它不足以满足您的需求时才寻找选项。

    【讨论】:

    • 我现在几乎已经完成了将一个旧项目从 ZF1 移植到 CakePHP 的工作(因为我不喜欢 ZF2 的发展方向),我认为你的回答几乎总结了我使用 CakePHP 的经验,所以远的。我喜欢它在设计上相对简单,并且可以看出在这个阶段使用 Doctrine 会使很多 CakePHP 的“魔法”变得多余。我现在将坚持使用 CakePHP 的 ORM,并在未来的某个时候看看 Doctrine。
    • 自从我最初回答这个问题以来,情况发生了很大变化。 CakePHP 3.x 中的 ORM 已被重写,与以前的版本相比有了巨大的改进。它甚至可以单独使用github.com/cakephp/orm 反过来也是可能的:在 CakePHP 中使用另一个 ORM 库,但我个人认为没有任何理由这样做。 CakePHP 3.x 的 ORM 真是太棒了。
    • 我最近开始了一个基于 CakePHP 3.2 的新项目,我必须说,ORM 看起来确实不错!
    【解决方案2】:

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

    • 什么可以提高您的工作效率?
    • 什么会给您更多的可维护性?
    • 什么可以减少您的学习曲线?

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

    【讨论】:

    • 我实际上还没有用 Doctrine 做任何认真的工作,只用 CakePHP 的 ORM 做了少量工作,刚好够我起草项目的一些基本功能。就我个人而言,就我目前所使用的而言,我认为 CakePHP 可以回答您的所有三个问题,至少从我目前所见的情况来看是这样。但是,我不得不怀疑,我是否会发现 CakePHP 的 ORM 缺少 Doctrine 提供的某些功能。
    猜你喜欢
    • 2010-11-27
    • 1970-01-01
    • 1970-01-01
    • 2018-02-06
    • 2016-06-10
    • 2012-10-16
    • 2010-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多