ORM在CakePHP3中的工作原理



我对如何在CakePHP3中使用ORM有效地创建代码感到困惑。

我有2个月的CakePHP2经验,现在我希望转移到CakePHP3,但我对CakePHP3的一些基础知识感到困惑:

  1. ORM如何在CakePHP3中工作?

  2. CakePHP3如何比CakePHP2更有效?

我已经读过烹饪书3了。从官方的CakePHP网站,但我还是很困惑。

我对ORM概念不熟悉。请帮助我弄清楚ORM的基础知识,为什么我们在CakePHP3中使用它,以及如何使用ORM可以更有效并生成更少的代码?

提前感谢。

这在文档中有详细介绍(强调添加):

CakePHP 3.0提供了一个新的ORM,该ORM是从地面。而在1。X和2。X对a很有用很长一段时间,它有一些问题,我们想解决。

  • 弗兰肯斯坦-它是一个记录,还是一个表?目前两者都有。
  • 不一致的API - Model::read()例如。
  • 无查询对象-查询总是被定义为数组,这有一些限制限制。例如,它使执行联合查询和子查询变得非常多困难。
  • 返回数组——这是关于CakePHP的一个常见抱怨在某种程度上可能降低了采用率。
  • 没有记录对象-这个使附加格式化方法变得困难/不可能。
  • 控制-应该是ORM的一部分,而不是一个疯狂的黑客行为。
  • 递归)应该通过定义哪些关联来更好地控制这一点包含,而不是递归级别。
  • DboSource -它是一个野兽,而且模型更依赖于它而不是数据源。这种分离可能是更干净更简单。
  • 验证-应该是单独的,它是一个巨人这是一个疯狂的函数。把它变成一个可重复使用的比特会使框架更可扩展。

CakePHP 3.0中的ORM解决了这些问题很多问题。新的ORM现在主要关注关系数据存储。在未来,我们将通过插件添加非关系型存储,如ElasticSearch和其他。

文档继续介绍ORM架构的更多细节,值得花时间阅读和吸收。

如果你只花了一点时间使用CakePHP 3.0,它的好处可能并不明显,但是表与实体的分离使得类/方法的职责更加明显,并且增加了以前模型层工作方式所不可能实现的灵活性。

了解新ORM的好处的最好方法就是按照设计使用它。