• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

什么是ORM,以及在php上的使用?

php 搞代码 4年前 (2022-01-25) 14次浏览 已收录 0个评论
文章目录[隐藏]

ORM 最根本的作用是什么? 以及一些比较好的php ORM框架

回复内容:

ORM 最根本的作用是什么? 以及一些比较好的php ORM框架

ORM:object relation mapping,即对象关系映射,简单的说就是对象模型和关系模型的一种映射。为什么要有这么一个映射?很简单,因为现在的开发语言基本都是oop的,但是传统的数据库却是关系型的。为了可以靠贴近面向对象开发,我们想要像操作对象一样操作数据库。
举个例子:获取一篇文章,传统的方式先要执行一个sql检索数据

<code class="lang-sql">select * from post where id = 1</code>

然后输出标题和内容使用

<code class="lang-php">echo $post['title']; echo $post['content'];</code>

上面的代码遇到面向对象强迫症者,他们会纠结死的。
所以他们想出了这个东西,在ORM里获取一篇文章可以这样:

<code class="lang-php">$post = postTable::getInstance()->find(1);#会再内部执行select * from post where id = 1</code>

然后输出:

<code class="lang-php">echo $post->getTitle();echo $post->getContent();</code>

妈妈再也不用担心我的强迫症了^_^

高级点的应用,文章和分类是一对多关系、文章和标签是多对多关系

<code class="lang-php">$cate = $post->getCategory(); //获取文章分类echo $cate->getName(); //获取分类名$tags = $post->getTags(); //获取一个文章的所有标签</code>

是不是一个sql都没写就获取到我们需要的所有数据了?使用ORM可以完全不写sql而实现应用,这些ORM都替我们做了。
除此之外,orm还可以隔离底层数据库层,我们不需要关心我们使用的是mysql还是其他的关系型数据库。

我知道的orm: doctrine和propel
除了orm之外还有odm,即object document mapping,对象文档映射,使用文档数据库比如mongodb时使用

核心就是支持纯面向对象的开发,这样就会产生一个不得不面对的问题,处于数据源层的关系型数据库不支持面向对象中对象之间的复杂关系。

如何将系统的当前状态持久到数据源层将非常棘手。你可以在业务逻辑层,通过数据访问层来处理。ORM就是数据访问层强大的一种解决方案。通过它,可以最大限度隔离业务逻辑层和数据源之间的耦合度。

全名object relation mapping

推荐一个短小精悍的ActiveRecord库,lloydzhou/activerecord · GitHub, 可以实现类似Yii的relation的效果。文档地址:http://lloydzhou.github.io/activerecord/

<code>class User extends ActiveRecord{  public $table = 'user';  public $primaryKey = 'id';  public $relations = array(    'contacts' => array(self::HAS_MANY, 'Contact', 'user_id')  );}class Contact extends ActiveRecord{}$user = new User();// find one uservar_dump($user->notnull('id')->orderby('id desc')->find());echo "\nContact of User # {$user->id}\n";// get contacts by using relati<b>/本文来源gao@!dai!ma.com搞$$代^@码5网@</b><strong>搞代gaodaima码</strong>on://   'contacts' => array(self::HAS_MANY, 'Contact', 'user_id'),var_dump($user->contacts);</code>

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:什么是ORM,以及在php上的使用?

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址