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. Android基础知识大全(精品)

    [1].ProgressBar   <ProgressBar android:id="@+id/progress_bar" android:layout_width=&quo ...

  2. 大型网站的 HTTPS 实践(三)——基于协议和配置的优化

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt389 1 前言 上文讲到 HTTPS 对用户访问速度的影响. 本文就为大家介 ...

  3. 嵌套ajax 页面卡死的问题

    问题:要一个AJAX中的回调函数中又进行了一个AJAX调用,并且这个AJAX是在一个循环调用的,不论设置async属性是true和false页面卡死. 解决方法:async属性都设为true,不用循环 ...

  4. [转载]浏览器事件window.onload、onfocus、onblur、ons

    原文地址:浏览器事件window.onload.onfocus.onblur.onscroll和resize作者:lilyxiao <html> <head> <titl ...

  5. 201521123050 《Java程序设计》第4周学习总结

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

  6. 201521123028《Java程序设计》第4周学习总结

    1. 本周学习总结 2. 书面作业 Q1.注释的应用 使用类的注释与方法的注释为前面编写的类与方法进行注释,并在Eclipse中查看. 对上周PTA的实验5-3中的矩形和圆形类做注释. Q2.面向对象 ...

  7. 201521123048 《Java程序设计》第13周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jmu ...

  8. 201521123078 《java程序设计》第十周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 创建线程:定义Thread的子类可以实现Runable接口 线程的控制:线程暂停Thread.sleep() ...

  9. 启用Oracle中的scott用户

    启用Oracle中的scott用户 在Linux系统上安装Oracle服务器,有的不含有scott用户,有的scott用户被锁.下面是添加scott用户或解锁scott. 一. 验证scott用户是否 ...

  10. Struts2第十二篇【模型驱动】

    什么是模型驱动 在Struts2中模型驱动就是用来封装数据的..完成数据的自动封装. 为什么要使用模型驱动? 我们之前就使用过Sturts2的数据自动封装功能,是用params拦截器完成的-既然有了p ...