PHP完全自学手册(珍藏版) 中文pdf扫描版下载
这篇文章我们来看看在Yii2之中的Active Record,为啥要将Active Record单独出来说呢?因为个人认为这是Yii(不管是Yii1.1还是Yii2)最强大的一部分功能之一,何况又遇上在Yii2中其实对Active Record的改进还是比较多的,所以我们就通过这篇文章来瞅瞅Yii2的Active Record新特性。
1.支持更多的数据库
Yii2的Active Record首先值得称道的一点就是它已经可以支持更多的数据库,包括一些NoSQL类型的数据库如MongoDB,还有一些流行的存储后端如: elasticsearch
, redis
, Sphinx search
也得到很好的支持,现在真是随意你怎么玩数据了。因为我们在想换一个存储后端的时候可以轻松地在配置文件里切换过来,完全不用去修改Active Record的代码,酷毙!
2.在Yii2中使用Active Record查询数据
在Yii2中使用Active Record的时候,第一个最直观的感受可能就是model()调用已经跟Yii1.1变得不同了,可以说所有的查询函数都源自 find()
或 findBySql()
这两个函数,所以像在Yii1.1中的Post::model()->findAll()
等函数就没有了。这里对Active Record的查询模块介绍都是很简单的,当然也可能包含一些个人的主观因素在里面,不说废话,如果你能看看下面这些来自官方文档中Active Record介绍的代码片段你就会变得很清晰。
还有一个值得注意的地方是,在Yii1.1中使用的findByPk()
和find()
在Yii2中有了新的替代者,
3.关联(Relations)
在Yii2中,不再存在relations()
函数,而是使用getters
的方式返回一个ActiveQuery
对象
但是关联性还是可以使用类似$game->players
,不过在Yii2你可以根据自己的情况来自定义你的查询环境(查询语句),比如: