用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)的更多相关文章

  1. Yii2 数据库Active Record(ORM)

    ACTIVE RECORD(ORM) 参考:http://www.yiiframework.com/doc-2.0/guide-db-active-record.html namespace app\ ...

  2. yii Query Builder (yii 查询构造器) 官方指南翻译

    /**** Query Builder translated by php攻城师 http://blog.csdn.net/phpgcs Preparing Query Builder 准备 Quer ...

  3. RoR - Introduction to Active Record

    Active Record: ORM ( Object-relational Mapping)Bridges the gap between relational databases , which ...

  4. yii2 Query Builder 查询打印sql语句

    $query = new Query(); $query->select('gs.*, g.goods_images, sa.attr_name, sa.is_default, sa.alias ...

  5. Yii2 数据操作Query Builder

    转载地址: http://blog.csdn.net/hzqghost/article/details/44117081 Yii2 数据操作Query Builder 分类: Yii22015-03- ...

  6. [moka同学笔记]Yii2 数据操作Query Builder 2

    Query Builder $rows = (new \yii\db\Query()) ->select(['dyn_id', 'dyn_name']) ->from('zs_dynast ...

  7. [moka同学笔记]Yii2 数据操作Query Builder

    Query Builder [php] view plain copy   $rows = (new \yii\db\Query()) ->select(['dyn_id', 'dyn_name ...

  8. Yii2 数据操作Query Builder查询数据

    Query Builder $rows = (new \yii\db\Query()) ->select(['dyn_id', 'dyn_name']) ->from('zs_dynast ...

  9. SqlKata - 方便好用的 Sql query builder

    SqlKata查询生成器是一个用C# 编写的功能强大的Sql查询生成器.它是安全的,与框架无关.灵感来源于可用的顶级查询生成器,如Laravel Query Builder和 Knex. SqlKat ...

随机推荐

  1. JavaScript学习-2循环

    文章目录 ----------①console函数 ----------②for循环 ----------③跳出循环 ----------④练习题:口诀表 ----------⑤练习题:幼兔 ---- ...

  2. 通过DMS连接RDS需要添加的DMS白名单地址

    10.152.163.0/24,139.224.4.0/24,11.193.54.0/24,101.37.74.0/24,10.137.42.0/24,121.43.18.0/24

  3. python,关于用户登录与注册问题

    tag=Truecount=1while tag: name = input('请输入用户名>>:').strip() password = input('请输入密码>>:') ...

  4. 微商城分享 包括app分享 微信分享

    <template> <div class="spr"> <img src="../../assets/images/activity/sh ...

  5. Django_models下划线__正反查询,对象正反查询

    1.我们使用models对数据库进行查询的时候,想去拿到结果的时候有时直接使用".字段",有时是'[0].字段',区别就是我们使用的语句返回的到底是一个对象还是列表: obj=mo ...

  6. mongodb文件损坏的恢复--无可恢复数据

    1.mongodb 启动异常error code 100,检查日志,数据文件损坏 2 检查collection-15-6548623434943640018.wt 可恢复数据,为空,不存在恢复的数据 ...

  7. as3.0 嵌入字体的用法

    var txt:TextField = new TextField();//创建文本 txt.embedFonts=true;//确定嵌入字体 var font:Font=new MyFont();/ ...

  8. 890. Find and Replace Pattern找出匹配形式的单词

    [抄题]: You have a list of words and a pattern, and you want to know which words in words matches the ...

  9. slf4j 日志组件

    slf4j:Simple Logging Facade for Java 官网:https://www.slf4j.org/

  10. AutoCAD开发5--批量修改dwg文件

    Dim files, path, filename path = ThisDrawing.Utility.GetString(True, "输入dwg文件所在路径:") 'dwg文 ...