Php 什么是ORM?雄辩的ORM?

Php 什么是ORM?雄辩的ORM?,php,oop,laravel,orm,Php,Oop,Laravel,Orm,我是OOP编程的新手。但我认为我理解什么是ORM:实际上,ORM库允许在对象中抽象数据库,并将其当作OOP编程中的类来处理 我说得对吗?Elount是一个在Laravel中管理ORM的库,使用它有必要扩展模型(MVC体系结构中软件的业务逻辑)查看Laravel.com上的文档tl;dr:ORM管理数据库中简单的基于整数的关系到代码中可以使用的类实例的转换 你在几个不同的领域感到困惑 首先,而且很快,MVC是应用程序的一层;具体来说,它是表示层的一部分。您的业务逻辑应该完全独立于MVC层 像MyS

我是OOP编程的新手。但我认为我理解什么是ORM:实际上,ORM库允许在对象中抽象数据库,并将其当作OOP编程中的类来处理


我说得对吗?Elount是一个在Laravel中管理ORM的库,使用它有必要扩展模型(MVC体系结构中软件的业务逻辑)

查看Laravel.com上的文档

tl;dr:ORM管理数据库中简单的基于整数的关系到代码中可以使用的类实例的转换

你在几个不同的领域感到困惑

首先,而且很快,MVC是应用程序的一层;具体来说,它是表示层的一部分。您的业务逻辑应该完全独立于MVC层

像MySQL和PostgreSQL这样的RDBMS天生就不善于建立和维护各种关系,而这些关系是面向对象编程的基础。在经典的博客示例中,您的
帖子
属于
用户
,该用户可能有多篇帖子。如果我们尝试递归地序列化这些对象并存储它们,那么最终会出现大量循环(因此是无限循环)

相反,我们使用一个索引和键系统在数据库中永久记录一些其他相关对象。它们可能引用一个表,但不是以编程方式建立的具体关系的表示

那么我们有了ORM。ORM通过EXELQUENT中的外键和关系方法知道posts表中一行上的user_id列实际上与用户对象相关。一旦您添加了关系(请参见下文),您就可以随时引用该用户,只要该用户存在,而不必使用数据库,甚至不必知道底层数据已经不是对象

我们可以在
Post.php
中看到以下内容:

public function user() {
  return $this->belongsTo(User::class);
}
如果我们的用户id为5,Eloquent会使用一些语法魔法(特别是,将类和附加id的大小写降低)来查找id为5的用户。当您通过渴望加载或延迟加载检索此数据时,eloquent将使用检索到的数据创建
用户
对象


抽象在于这样一个事实:从技术上讲,类/对象不了解数据库结构,而Eloquent处理属性名和列名之间的转换。

有时,最好知道您是否从其他人或专业人士那里学到了什么。不是任何人都有可能成为一名教师请提供解决方案,并尝试回答“如何”和“为什么”部分。谢谢:在这个网络中有这样的问题吗?(纽拜)嗯,我不确定。最好是在晚上。至少问题的一部分是询问什么是ORM。然而,关于什么是ORM,已经有很多问题和其他资源。例如,MVC更合适地分为三个层,具有一些轻微的耦合:模型层(正如OP所说的,通常是业务逻辑所在的位置)、控制器层和视图层。MVC中只有V是“表示层”。Web框架可能会稍微复杂一些,因为客户端和服务器端都可能有多个控制器和视图,但无论如何,将MVC视为一个层都是不正确的。