Query Builder

[php] view plain copy

 
  1. $rows = (new \yii\db\Query())
  2. ->select(['dyn_id', 'dyn_name'])
  3. ->from('zs_dynasty')
  4. ->where(['between','dyn_id', 1,30])
  5. ->limit(10)
  6. ->all();
  7. print_r($rows);
 
[php] view plain copy

 

  1. use yii\db\Query;
  2. $query = (new Query())
  3. ->from('user')
  4. ->orderBy('id');
 

SELECT

 
[php] view plain copy

 

  1. $query->select('*')->
  2. select('dyn_id as id, dynasty.dyn_name')->
  3. $query->select(['dyn_id as id', "CONCAT(dyn_name,'a')"])->
  4. $query->select('user_id')->distinct()->
 
 
 

FORM

 
[php] view plain copy

 

  1. $query->from('user');
  2. $query->from(['public.user u', 'public.post p']);
  3. $query->from('public.user u, public.post p');
  4. $query->from(['u' => 'public.user', 'p' => 'public.post']);
  5. ----------
  6. $subQuery = (new Query())->select('id')->from('user')->where('status=1');
  7. // SELECT * FROM (SELECT `id` FROM `user` WHERE status=1) u
  8. $query->from(['u' => $subQuery]);
 

WHERE

 
[php] view plain copy

 

  1. where('status=1')->
  2. where('status=:status', [':status' => $status])->
  3. where([
  4. 'status' => 10,
  5. 'type' => null,
  6. 'id' => [4, 8, 15],
  7. ])->
  8. -------
  9. $userQuery = (new Query())->select('id')->from('user');
  10. // ...WHERE `id` IN (SELECT `id` FROM `user`)
  11. $query->...->where(['id' => $userQuery])->...
  12. --------
  13. ['and', 'id=1', 'id=2'] //id=1 AND id=2
  14. ['and', 'type=1', ['or', 'id=1', 'id=2']] //type=1 AND (id=1 OR id=2)
  15. ['between', 'id', 1, 10] //id BETWEEN 1 AND 10
  16. ['not between', 'id', 1, 10] //not id BETWEEN 1 AND 10
  17. ['in', 'id', [1, 2, 3]] //id IN (1, 2, 3)
  18. ['not in', 'id', [1, 2, 3]] //not id IN (1, 2, 3)
  19. ['like', 'name', 'tester'] //name LIKE '%tester%'
  20. ['like', 'name', ['test', 'sample']] //name LIKE '%test%' AND name LIKE '%sample%'
  21. ['not like', 'name', ['or', 'test', 'sample']] //not name LIKE '%test%' OR not name LIKE '%sample%'
  22. ['exists','id', $userQuery] //EXISTS (sub-query) | not exists
  23. ['>', 'age', 10] //age>10
 

ADD WHERE

 
[php] view plain copy

 

  1. $status = 10;
  2. $search = 'yii';
  3. $query->where(['status' => $status]);
  4. if (!empty($search)) {
  5. $query->andWhere(['like', 'title', $search]);
  6. }
  7. //WHERE (`status` = 10) AND (`title` LIKE '%yii%')
  8. //andWhere() or orWhere()
 
 

FILTER WHERE

 
[php] view plain copy

 

  1. $query->filterWhere([
  2. 'username' => $username,
  3. 'email' => $email,
  4. ]);
  5. //如果email为空,则 WHERE username=:username
 

ORDER BY

[php] view plain copy

 

  1. $query->orderBy([
  2. 'id' => SORT_ASC,
  3. 'name' => SORT_DESC,
  4. ]);
  5. //orderBy , addOrderBy
 

GROUP BY

[php] view plain copy

 

  1. $query->groupBy('id, status');
  2. $query->addGroupBy(['created_at', 'updated_at']);
 

HAVING 

 
[php] view plain copy

 

  1. $query->having(['status' => $status]);
  2. //having,andHaving,orHaving
 

LIMIT OR OFFSET

 
[php] view plain copy

 

  1. $query->limit(10);
  2. $query->offset(10);
 

JOIN

 
  • innerJoin()
  • leftJoin()
  • rightJoin()
[php] view plain copy

 

  1. $query->select(['user.name AS author', 'post.title as title'])
  2. ->from('user')
  3. ->leftJoin('post', 'post.user_id = user.id');
  4. $query->join('FULL OUTER JOIN', 'post', 'post.user_id = user.id');
  5. $query->leftJoin(['u' => $subQuery], 'u.id=author_id');
 
 

UNION

[php] view plain copy

 

  1. $query = new Query();
  2. $query->select("id, category_id as type, name")->from('post')->limit(10);
  3. $anotherQuery = new Query();
  4. $anotherQuery->select('id, type, name')->from('user')->limit(10);
  5. $query->union($anotherQuery);
 

QUERY METHODS

  • all() //所有行列
  • one() //第一行
  • column() //第一列
  • scalar() //第一行第一列
  • exists() //是否有结果存在
  • count() //记录数量
  • sum($q), average($q), max($q), min($q) //$q 为字段或表达式
[php] view plain copy

 

  1. $count = (new \yii\db\Query())
  2. ->from('user')
  3. ->where(['last_name' => 'Smith'])
  4. ->count();
  5. //SELECT COUNT(*) FROM `user` WHERE `last_name`=:last_name
  6. $command = (new \yii\db\Query())
  7. ->select(['id', 'email'])
  8. ->from('user')
  9. ->where(['last_name' => 'Smith'])
  10. ->limit(10)
  11. ->createCommand();
  12. // show the SQL statement
  13. echo $command->sql;
  14. // show the parameters to be bound
  15. print_r($command->params);
  16. // returns all rows of the query result
  17. $rows = $command->queryAll();
 
QUERY RESULTS

 
[php] view plain copy

 

  1. use yii\db\Query;
  2. $query = (new Query())
  3. ->from('user')
  4. ->indexBy('username');
  5. foreach ($query->batch() as $users) {
  6. // $users is indexed by the "username" column
  7. }
  8. foreach ($query->each() as $username => $user) {
  9. }
 
 
INDEXING

 
[php] view plain copy

 

  1. use yii\db\Query;
  2. $query = (new Query())
  3. ->from('user')
  4. ->orderBy('id');
  5. foreach ($query->batch() as $users) {
  6. // batch( $batchSize = 100, $db = null )
  7. // 一个批次取100行
  8. }
  9. foreach ($query->each() as $user) {
  10. // 一行一行取
  11. }
 
 
 
 

[moka同学笔记]Yii2 数据操作Query Builder的更多相关文章

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

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

  2. Yii2 数据操作Query Builder

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

  3. Yii2 数据操作Query Builder(转)

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

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

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

  5. [moka同学笔记]yii2.0查询数据库

      一. [:id占位符]使用 $results = Test::findBySql($sql,array(':id'=>'1 or 1=1))->all()   二. [id=1]  选 ...

  6. [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 ...

  7. [moka同学笔记]yii2.0缓存

    1.控制器中CacheDemoController.php <?php /** * Created by PhpStorm. * User: moka同学 * Date: 2016/06/29 ...

  8. [moka同学笔记]Yii2.0 modal的使用

    第一次使用,时候不明白什么原理,大概用了几次后,才模模糊糊搞清楚原来是怎么一回事,现在就把写过的代码,贴在下边. 1.在视图文件中, 第一步首先在index.php文件中 做了一个a链接的按钮 调用了 ...

  9. [moka同学笔记]yii2.0表单的使用

    1.创建model   /biaodan.php <?php /** * Created by PhpStorm. * User: moka同学 * Date: 2016/08/05 * Tim ...

随机推荐

  1. c#动态调用Webservices

    方式一: Hashtable ht = new Hashtable(); ht.Add("a", "testhelloworld"); XmlDocument ...

  2. 第五节:表单标签的用法——value绑定和修饰符

    1.表单标签的用法--value绑定和修饰符 value绑定的写法:v-bind:value 或者简写 :value 修饰符: lazy , Number , trim . 用法如:  v-model ...

  3. HTTP学习四:SPDY和HTTP/2.0

    1 HTTP1.0/1.1与HTTPS的不足 1.1 HTTP1.0/1.1不足 单路连接 HTTP 协议的最大弊端就是每个 TCP 连接只能对应一个 HTTP 请求,即每个 HTTP 连接只请求一个 ...

  4. Java中的数是用补码表示的检验

    一.基本介绍(关于下列五个定义来自http://www.cnblogs.com/zhangziqiu/archive/2011/03/30/ComputerCode.html#!comments,谢原 ...

  5. JS中实现数组和对象的深拷贝和浅拷贝

    数组的拷贝 > 数组的深拷贝,两层 var arr = [[1,2,3],[4,5,6],[7,8,9]]; var arr2 = []; 循环第一层数组 for(var i=0,len=arr ...

  6. WPF自定义控件与样式(5)-Calendar/DatePicker日期控件自定义样式及扩展

    一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接. 本文主要内容: 日历控 ...

  7. IO流-文件管理

    File f = new File(“test.txt”); File的构造器不会在文件不存在的情况下新建一个文件,从File对象中创建文件是由文件流的构造器或File类的createNewFile方 ...

  8. java中对象多态时成员变量,普通成员函数及静态成员函数的调用情况

    /* 样例1: class Parent{ int num = 3; } class Child extends Parent{ int num = 4; } */ /* 样例2: class Par ...

  9. Oracle存储过程获取YYYY-MM-DD的时间格式

    环境:Oracle 10g,11g 问题重现:PL/SQL中命令窗口下,发现存储过程得到的时间格式不符合预期要求. SQL> select sysdate from dual; SYSDATE ...

  10. Cool!15个超炫的 CSS3 文本特效【上篇】

    每一个网页设计师都希望创建出让用户能够赏识的网站.当然,这是不可能满足每个人的口味的.幸运的是,我们有最强大的工具和资源.实际上,我们非常多的网站模板,框架,内容管理系统,先进的工具和其他的资源可以使 ...