我对如何使用CakePHP3中的ORM有效地创建代码感到困惑。
我在CakePHP2有2个月的经验,现在我希望继续使用CakePHP3,但我对CakePHP3的一些基础知识感到困惑:
ORM如何在CakePHP3中运行?
CakePHP3如何比CakePHP2更有效?
我已经从CakePHP官方网站上阅读了Cookbook 3.x,但我仍感到困惑。
我是ORM概念的新手。我可以帮助找出ORM的基础知识,为什么我们在CakePHP3中使用它,以及如何使用ORM更有效并产生更少的代码?
提前致谢。
答案 0 :(得分:1)
这包括in some detail in the documentation(强调添加):
CakePHP 3.0具有一个新的ORM,它已被重写 磨砺了。虽然1.x和2.x中使用的ORM对我们很有帮助 很长一段时间它有一些我们想要解决的问题。
- 弗兰肯斯坦 - 这是一张唱片还是一张桌子?目前它们都是。
- 不一致的API - 例如Model :: read()。
- 没有查询对象 - 查询总是被定义为数组,这有一些限制 限制。例如,它使得工会和子查询更多 更难。
- 返回数组 - 这是关于CakePHP的常见抱怨,并且 可能在某些层面上减少了采用率。
- 没有记录对象 - 这个 使格式化方法难以/不可能。
- 可容纳 - 应该是ORM的一部分,而不是疯狂的hacky行为。
- 递归 - 这应该更好地控制,因为它定义了哪些关联 包括在内,而不是递归水平。
- DboSource - 它是一只野兽,而且 模型比数据源更依赖于它。这种分离可能是 更清洁,更简单。
- 验证 - 应该是分开的,它是一个巨人 疯狂的功能吧。使它成为一个可重复使用的位将使 框架更具可扩展性。
CakePHP 3.0中的ORM解决了这些问题 更多问题。新的ORM目前专注于关系数据存储。在未来和通过插件,我们将添加非关系存储,如ElasticSearch和其他。
文档继续提供有关ORM体系结构的更多详细信息,值得花时间阅读和吸收。
如果您只花了一点时间使用CakePHP 3.0,那么好处可能并不明显,但是表与实体的分离使得类/方法的责任更加明显,并增加了不具备的灵活性可能与模型层之前的工作方式有关。
理解新ORM的好处的最好方法就是按照设计使用它。