首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是ORM?雄辩的ORM?

什么是ORM?雄辩的ORM?
EN

Stack Overflow用户
提问于 2015-01-31 18:04:22
回答 2查看 7.7K关注 0票数 5

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

我说的对吗?雄辩是在Laravel中管理ORM的库,并使用它来扩展模型( MVC体系结构中软件的业务逻辑)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-31 19:27:54

ORMs管理数据库中简单的基于整数的关系到代码中可以使用的类实例的转换。

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

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

像MySQL和PostgreSQL这样的RDBMS在建立和维护对面向对象编程基本的各种关系方面本质上是不好的。在经典的博客示例中,您的Post属于User,用户可能有几个帖子。如果我们试图递归地序列化这些对象并存储它们,那么最终会有很多循环(因此是无限的)循环。

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

那么我们就有了ORM。ORM通过外键和关系方法清楚地知道,posts表中行中的user_id列实际上与用户对象相关。一旦您添加了关系(请参见下面),就会发生这种情况,以便您可以在任何时候引用该用户,只要用户存在,而不必使用数据库,甚至无需知道底层数据不是一个对象。

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

代码语言:javascript
复制
public function user() {
  return $this->belongsTo(User::class);
}

如果我们的user_id为5,那么雄辩者就会使用一些语法魔法(具体来说,低蛇类的例子和附加的_id)来查找id为5的用户。当您通过急切的加载或延迟加载检索到它时,雄辩者将使用检索到的数据来补充User对象。

抽象的原因在于,从技术上讲,类/对象不了解数据库结构,而是处理与属性名称和列名的转换。

票数 9
EN

Stack Overflow用户

发布于 2015-01-31 18:18:15

查看laravel.com 这里的文档

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28254802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档