Yii2 三层设计模式:SQL Command、Query builder、Active Record(ORM)
用Yii2也有一段时间了,发现Yii2 Framework对Database的操作有非常良好的结构和弹性。
接下来介绍三种数据库操作方式。
SQL Command Level:
// Get DB componet of Application
$db = Yii::$app->db; # Get data form SQL execution
$ arrData = $db->createCommand('SELECT * FROM table limit 10')
->queryAll();
print_r($arrData);
Query Builder Level
$arrData = (new \yii\db\Query())
->select(['*'])
->from('table')
->where([])
->limit(10)
->all(Yii::$app->db); // 选择数据库 print_r($arrData);
Active Record (ORM)
$objData = \app\models\ActiveRecordModal::find()
->select(['*'])
->where([])
->limit(10)
->all(); print_r($objData);
那么这三种对区别是什么呢? 1. SQL Command 本身(yii\db\command) 作为Query builder、Active Record对底层,所以需要在createCommand() 之后使用。 2. Active Record(ORM) 一个Object会带有多个成员变量和成员函数导致性能上的损耗。 3. Active Record使用asArray() 可以略过ORM的一些细节上处理,将返回值由对象转为数组,达到Builder Level效能。
Yii2 三层设计模式:SQL Command、Query builder、Active Record(ORM)的更多相关文章
- Yii2 数据库Active Record(ORM)
		ACTIVE RECORD(ORM) 参考:http://www.yiiframework.com/doc-2.0/guide-db-active-record.html namespace app\ ... 
- yii Query Builder (yii 查询构造器) 官方指南翻译
		/**** Query Builder translated by php攻城师 http://blog.csdn.net/phpgcs Preparing Query Builder 准备 Quer ... 
- RoR - Introduction to Active Record
		Active Record: ORM ( Object-relational Mapping)Bridges the gap between relational databases , which ... 
- yii2 Query Builder 查询打印sql语句
		$query = new Query(); $query->select('gs.*, g.goods_images, sa.attr_name, sa.is_default, sa.alias ... 
- Yii2 数据操作Query Builder
		转载地址: http://blog.csdn.net/hzqghost/article/details/44117081 Yii2 数据操作Query Builder 分类: Yii22015-03- ... 
- [moka同学笔记]Yii2 数据操作Query Builder 2
		Query Builder $rows = (new \yii\db\Query()) ->select(['dyn_id', 'dyn_name']) ->from('zs_dynast ... 
- [moka同学笔记]Yii2 数据操作Query Builder
		Query Builder [php] view plain copy $rows = (new \yii\db\Query()) ->select(['dyn_id', 'dyn_name ... 
- Yii2 数据操作Query Builder查询数据
		Query Builder $rows = (new \yii\db\Query()) ->select(['dyn_id', 'dyn_name']) ->from('zs_dynast ... 
- SqlKata - 方便好用的 Sql query builder
		SqlKata查询生成器是一个用C# 编写的功能强大的Sql查询生成器.它是安全的,与框架无关.灵感来源于可用的顶级查询生成器,如Laravel Query Builder和 Knex. SqlKat ... 
随机推荐
- 001之IP基础对话框
			在TCP/IP协议中,建立连接的两个进程(客户端和服务器)各自用一个socket(IP地址+TCP/UDP端口号)标识.在MFC中流式套接字(SOCK_STREAM)和数据报套接字(SOCK_DGRA ... 
- mysql_config_editor usage
			# mysql_config_eidtor is a tool to create a profile file $HOME/.mylogin.cnf, in which you can store ... 
- Apache 修改端口号
			默认是80端口,可在httpd.conf文件中修改以下2个地方的端口号为预定的即可,例如修改为8080端口 把httpd.conf 中Listen 80 改成Listen 8080 把ServerNa ... 
- JS 高级总结
			一.查找HTML元素 通常,通过 JavaScript,您需要操作 HTML 元素. 1.通过 id 找到 HTML 元素 2.通过标签名找到 HTML 元素 3.通过类名找到 HTML 元素 提示: ... 
- HTML 元素大小
			1.元素的偏移量 元素的可见大小是由其高度.宽度决定,包括所有的内边距.滚动条和边框大小(不包括外边距). offsetHeight :元素在垂直方向上占用的空间大小,以像素计算.包括元素的高度,水平 ... 
- Gson的入门使用
			Java对象和Json之间的互转,一般用的比较多的两个类库是Jackson和Gson,下面记录一下Gson的学习使用. 基础概念: Serialization:序列化,使Java对象到Json字符串 ... 
- 求树的直径+并查集(bfs,dfs都可以)hdu4514
			题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4514 这题主要是叫我们求出树的直径,在求树的直径之前要先判断一下有没有环 树的直径指的就是一棵树上面距 ... 
- C语言变量声明内存分配
			转载: C语言变量声明内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1.栈区(stack)— 程序运行时由编译器自动分配,存放函数的参数值,局部变量的值等.其操作方式类似于数据结 ... 
- [剑指Offer]5-替换空格
			链接 https://www.nowcoder.com/practice/9023a0c988684a53960365b889ceaf5e?tpId=13&tqId=11210&tPa ... 
- java_20 LinkedList类
			LinkedList类特有的方法 (1)addLast() 将指定元素添加到此列表的结尾. addFirst() 将指定元素添加到此列表的开始. public static void main(St ... 
