用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. 通过adb启动app应用

    由于某些原因,我需要自动启动雷电模拟器里面的一个应用.(利用Windows任务计划) 怎么自启动雷电模拟器就不用说了,很简单. 自启动app我倒是不熟悉,我没用安卓方面的知识.再官网论坛上面查到了相关 ...

  2. Spring再接触 注入类型

    共有三种注入类型 一种是set注入 一种是构造注入 一种是接口注入 最常用的还是set 现在看一下construct 构造注入 在userservice中加入 package com.bjsxt.se ...

  3. chart.js应用中遇到的问题

    问题一:chart.js的版本问题:打开官网https://github.com/chartjs/Chart.js/releases/tag/v2.7.3,点击Tags,选择最新版本,我这里选用的是V ...

  4. https://segmentfault.com/a/1190000014637728

    原网站地址:https://segmentfault.com/a/1190000009657295#articleHeader3 基于 vue2 + element-ui 构建的后台管理系统 vue. ...

  5. springboot整合websocket实现一对一消息推送和广播消息推送

    maven依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...

  6. LINQ之let关键字

    let子句用于在LINQ表达式中存储子表达式的计算结果.let子句创建一个范围变量来存储结果,变量被创建后,不能修改或把其他表达式的结果重新赋值给它.此范围变量可以再后续的LINQ子句中使用. 实例1 ...

  7. 转:Loadrunner添加服务器监控

    一.监控windows系统:1.监视连接前的准备        1)进入被监视windows系统,开启以下二个服务Remote Procedure Call(RPC) 和Remote Registry ...

  8. lenet-5

    https://blog.csdn.net/happyorg/article/details/78274066 深度学习 CNN卷积神经网络 LeNet-5详解 2017年10月18日 16:04:3 ...

  9. 651. 4 Keys Keyboard复制粘贴获得的最大长度

    [抄题]: Imagine you have a special keyboard with the following keys: Key 1: (A): Print one 'A' on scre ...

  10. [leetcode]65. Valid Number 有效数值

    Validate if a given string can be interpreted as a decimal number. Some examples:"0" => ...