1. 概述

操作数据库有2种方式:

  • DAO(data access object),不安全
  • ORM(onject relational mapping)

2. DAO

Yii::app()->db->createCommand()->select()->from()->where()->andwhere()->orwhere->filterWhere()->innerjoin()->groupBy()->having();

// filterWhere 会过滤空值
Yii::app()->db->createCommand()->select()->from()->where()->andwhere()->orwhere->filterWhere()->innerjoin()->count();
Yii::app()->db->createCommand()->select()->from()->where()->andwhere()->orwhere->filterWhere()->innerjoin()->sum();
Yii::app()->db->createCommand()->select()->from()->where()->andwhere()->orwhere->filterWhere()->innerjoin()->min();
Yii::app()->db->createCommand()->select()->from()->where()->andwhere()->orwhere->filterWhere()->innerjoin()->max(); Yii::app()->db->createCommand()->select()->from()->where()->queryScalar();
Yii::app()->db->createCommand()->select()->from()->where()->queryColumn();
Yii::app()->db->createCommand()->select()->from()->where()->queryAll();
Yii::app()->db->createCommand()->select()->from()->where()->queryOne();
Yii::app()->db->createCommand()->select()->from()->where()->queryRow();

如何打印SQL:

$command = Yii::app()->db->createCommand()->from()->where();
echo $command->sql;
echo '<br/>';
var_export($command->params);

3.ORM

$obj = new Object()
$obj->save(); Object::find()->all();
Object::findOne()
; // where的写法有三种:字符串格式、操作符格式、哈希格式(如果value可以是array)
Object::find()->select()->where()->andFilterWhere()->orderBy()->all();
Object::find()->select()->where()->andFilterWhere()->orderBy()->one(); Object::find()->select()->where()->andFilterWhere()->orderBy()->column(); // 此方法返回查询结果中的第一列的值;
Object::find()->select()->where()->andFilterWhere()->orderBy()->scalar(); // 此方法返回值的第一行第一列的查询结果;
Object::find()->select()->where()->andFilterWhere()->orderBy()->exists(); // 此方法返回一个值指示是否包含查询结果的数据行;
Object::find()->select()->where()->andFilterWhere()->orderBy()->each(); // 每次取 10 条数据
Object::find()->select()->where()->andFilterWhere()->orderBy()->batch(); // 每次取 10 条数据, 迭代查询
Object::find()->select()->where()->andFilterWhere()->orderBy()->batch(); // 此方法返回一个值指示是否包含查询结果的数据行; Object::findBySql($sql)->all()->asArray(); // 不加asArray返回的是一个对象。

当你调用 yii\db\Query当中的一个查询方法的时候,实际上内在的运作机制如下:

  • 在当前 yii\db\Query 的构造基础之上,调用 yii\db\QueryBuilder 来生成一条 SQL 语句;
  • 利用生成的 SQL 语句创建一个 yii\db\Command 对象;
  • 调用 yii\db\Command 的查询方法(例如,queryAll())来执行这条 SQL 语句,并检索数据。

如何打印SQL:

$command = Object::find()->where()->createCommand();
echo $command->sql;
echo '<br/>';
var_export($command->params);

4.参考资料

Yii 2.0 数据库操作总结的更多相关文章

  1. ThinkPHP5.0框架开发--第7章 TP5.0数据库操作

    ThinkPHP5.0框架开发--第7章 TP5.0数据库操作 第7章 TP5.0数据库操作 ===================================================== ...

  2. Yii框架2.0 数据库操作初接触

    Yii2.0和Yii1.1版本的变动还是挺多的,我发现配置文件有许多不同,Yii1.1版本里有个main.php 好多信息是在这里配置的,比如默认控制器,数据库连接信息:Yii的数据库配置被单独拿出来 ...

  3. Yii 框架里数据库操作详解-[增加、查询、更新、删除的方法 'AR模式']

    public function getMinLimit () {        $sql = "...";        $result = yii::app()->db-& ...

  4. Yii2.0数据库操作增删改查详解

    1.简单查询: one(): 根据查询结果返回查询的第一条记录. all(): 根据查询结果返回所有记录. count(): 返回记录的数量. sum(): 返回指定列的总数. average():  ...

  5. [moka同学笔记]yii2.0数据库操作以及分页

    1.model中models/article.php 1 <?php 2 3 namespace app\models; 4 5 use Yii; 6 7 /** 8 * This is the ...

  6. Yii 框架里数据库操作详解

    增:1 第一种 $post=new Post; $post->title='sample post'; $post->content='content for the sample pos ...

  7. yii2.0数据库操作

    User::find()->all(); 此方法返回所有数据: User::findOne($id); 此方法返回 主键 id=1 的一条数据(举个例子): User::find()->w ...

  8. yii学习笔记(6),数据库操作(增删改)

    数据库增删改操作通过活动记录实例来完成 插入记录 /* ----------添加记录---------- */ // 创建活动记录对象 $article = new Article(); $artic ...

  9. YII数据库操作(CURD操作)

    数据库操作 获得模型对象 $model = 模型名::model();或$model = new 模型名(); 1.查询多条记录(返回值:二维数组) $result = $model->find ...

随机推荐

  1. 所有做java开发的都是些垃圾

    所有做java开发的都是些垃圾,再垃圾的框架,只要有人用,对java程序员来说那就是高性能,高可用,解耦的,非常优秀的一款框架.属于吃屎都吃的津津有味.java里的框架都是垃圾,连一个不错的都没有.比 ...

  2. 基于大数据的电影网站项目开发之CentOS的安装(一)

    一.下载VMware并安装,至于安装教程从网上搜索进行参考 二.下载系统镜像文件,这里使用的是CentOS-6.5-x86_64-bin-DVD1.iso 三.安装镜像文件 运行VMware work ...

  3. Topshelf便捷创建Windows服务

    结合Quartz.net学习,前提已经创建了一个定时任务,可见 <定时调度框架:Quartz.net> (基于配置文件形式) 首先引用Topshelf.dll 自定义服务TestServi ...

  4. 微信小程序开发心得--动画机制

    微信小程序也已出来有一段时间了,最近写了几款微信小程序项目,今天来说说感受.首先开发一款微信小程序,最主要的就是针对于公司来运营的,因为,在申请appid(微信小程序ID号)时候,需要填写相关的公司认 ...

  5. NSMutable属性声明时为什么不能使用copy

    在iOS开发里面我们经常会进行NSMutable(可变类型的类,常用的如NSMutableString,NSMutableArray,NSMutableDictionary,NSMutableData ...

  6. css入门基础知识

    一.CSS常用选择器 /*CSS注释*/ /*CSS修改页面中的所有标签必须借助选择器选中. 选择器中可以写多对CSS属性:每个属性名与属性值之间用:分隔,多对属性之间,必须用;分隔 选择器{ 属性1 ...

  7. Java Collections 源码分析

    Java Collections API源码分析 侯捷老师剖析了不少Framework,如MFC,STL等.侯老师有句名言: 源码面前,了无秘密 这句话还在知乎引起广泛讨论. 我对教授程序设计的一点想 ...

  8. 201521123082 《Java程序设计》第14周学习总结

    201521123082 <Java程序设计>第14周学习总结 标签(空格分隔):java 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. Answ ...

  9. 201521123097《Java程序设计》第八周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 2. 书面作业 1.本次作业题集集合 public static List return str; } pub ...

  10. 201521123044 《Java程序设计》第4周学习总结

    1. 本章学习总结 2. 书面作业 1. 注释的应用 使用类的注释与方法的注释为前面编写的类与方法进行注释,并在Eclipse中查看.(截图) 答: 2. 面向对象设计(大作业1,非常重要) 2.1 ...