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. 转载 远程用户连接mysql授权

    授权法:  在安装mysql的机器上运行:  1.d:\mysql\bin\>mysql -h localhost -u root  //这样应该可以进入MySQL服务器  2.mysql> ...

  2. C# 反向生成工具(DAL BLL Modle)

    VS2015  ADO.NET无果后果断~! 动软生成:http://pan.baidu.com/s/1gfIf0ZL

  3. POJ 3463 最(次)短路条数

    Sightseeing Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 9497   Accepted: 3340 Descr ...

  4. 【★】Web精彩实战之<智能迷宫>

    JS精彩实战之<智能迷宫>      ---宝贵编程经验分享会--- hello大家好,这里是Web云课堂,之前的一年里我们经历了Html和CSS的系统攻城,此时的你们已经是做静态(动静结 ...

  5. MySQL (八)-- 事务、变量、触发器

    1 事务 需求:有一张银行账户表,A用户给B用户转账,A账户先减少,B账户增加,但是A操作完之后断电了. 解决方案:A减少钱,但是不要立即修改数据表,B收到钱之后,同时修改数据表. 事务:一系列要发生 ...

  6. 【1414软工助教】团队作业8——第二次项目冲刺(Beta阶段) 得分榜

    题目 团队作业8--第二次项目冲刺(Beta阶段) 往期成绩 个人作业1:四则运算控制台 结对项目1:GUI 个人作业2:案例分析 结对项目2:单元测试 团队作业1:团队展示 团队作业2:需求分析&a ...

  7. 201521123083《Java程序设计》第二周学习总结

    [TOC] 1. 本周学习总结 这周我花在java里面的时间就是在做pta和看课本继承,接口和多态这几章的内容. 在pta上的总结: 详细的具体在后面pta实验中总结再说,这里先说几点. 借着List ...

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

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 2. 书面作业 本次作业题集集合 Q1.List中指定元素的删除(题目4-1) 1.1 实验总结 用Arrar ...

  9. Java第六周学习总结

    1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖 ...

  10. 201521123071 《JAVA程序设计》第四周学习总结

    1. 本周学习总结 1.1 1.2 在本周的学习中,主要学习了以下几点: 注释的应用,并能在Eclipse中查看 继承的基本定义,关键字super的用法,覆盖与重载 多态与is-a,instanceo ...