Yii2 数据操作Query Builder

转载 2015年07月06日 17:24:43

转载地址:

http://blog.csdn.net/hzqghost/article/details/44117081

Yii2 数据操作Query Builder

分类: Yii2 852人阅读 评论(0) 收藏 举报

Query Builder

  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);  

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

SELECT
  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
  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
  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
  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

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

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

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

HAVING 

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

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

JOIN
  • innerJoin()
  • leftJoin()
  • rightJoin()
  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
  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 为字段或表达式
  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.   
  7.   
  8. $command = (new \yii\db\Query())  
  9.     ->select(['id''email'])  
  10.     ->from('user')  
  11.     ->where(['last_name' => 'Smith'])  
  12.     ->limit(10)  
  13.     ->createCommand();  
  14.       
  15. // show the SQL statement  
  16. echo $command->sql;  
  17. // show the parameters to be bound  
  18. print_r($command->params);  
  19.   
  20.   
  21. // returns all rows of the query result  
  22. $rows = $command->queryAll();  

QUERY RESULTS
  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
  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. }  

Yii2学习之DAO和Query

简单介绍上节介绍了AR类,是以面向对象的方式操作数据库,yii2还提供了一套统一的数据库访问层API(Data Access Objects),可以以SQL语句方式操作数据库表,能完成AR类的任何操作...
  • xiaog351
  • xiaog351
  • 2015年08月17日 19:00
  • 6473

YII2-数据库yii\db\Query 查询方法

yii\db\Query 查询方法 A typical usage of the query builder looks like the following: $rows = (new \yii...
  • xmlife
  • xmlife
  • 2015年06月12日 14:56
  • 3704

jquery数据库在线查询条件编辑器QueryBuilder使用经验

本文主要讲述了在使用jquery数据库在线查询条件编辑器QueryBuilder过程中遇到的问题及对应的解决办法。...
  • cqliu2008
  • cqliu2008
  • 2016年03月06日 11:10
  • 3150

利用yii2 gridview实现批量删除案例

利用yii2 gridview实现批量删除案例
  • m_422744746
  • m_422744746
  • 2016年04月22日 16:13
  • 719

Yii2数据库分页操作方法介绍

本章节将介绍如何如何创建一个从数据表 country 中获取国家数据并显示出来的页面。为了实现这个目标,你将会配置一个数据库连接,创建一个活动记录类,并且创建一个操作及一个视图。...
  • u011986449
  • u011986449
  • 2015年07月02日 22:19
  • 2152

yii2 数据库操作sql

一、查询数据集合 //1.该方法是根据一个条件查询一个集合 $admin=Admin::model()->findAll($condition,$params); $admin=Admin::m...
  • liuxiaojun828
  • liuxiaojun828
  • 2016年08月28日 15:44
  • 499

Yii2 使用十六 数据库操作汇总

对象操作 查询 //1.简单查询 $admin=Admin::model()->findAll($condition,$params); $admin=Admin::model()->findAll(...
  • xundh
  • xundh
  • 2015年05月24日 20:52
  • 37500

Laravel学习笔记(五)---操作数据库--查询构建器(Query Builder)

查询构建器(Query Builder) 1、新增数据 使用查询构建器的insert方法即可插入一条/多条数据: DB::table('users')->insert([     ['...
  • tiansan
  • tiansan
  • 2017年04月01日 09:05
  • 1283

Yii数据库操作增删改查-[增加\查询\更新\删除 AR模式]

在Yii的开发中常常需要去使用Yii的增删改查方法,这些方法又可以多次变化和组合,带来全方位的实现对数据库的处理,下面对这些方法做一些简单的整理和梳理,有遗漏或是BUG,敬请指出。灰常感谢!!! 一、...
  • yafei450225664
  • yafei450225664
  • 2014年11月27日 11:19
  • 36166

Yii2实现跨mysql数据库关联查询排序功能

背景:在一个mysql服务器上(注意:两个数据库必须在同一个mysql服务器上)有两个数据库: memory (存储常规数据表) 中有一个 user 表(记录用户信息) memo...
  • qq_16885135
  • qq_16885135
  • 2017年01月13日 11:09
  • 1278
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Yii2 数据操作Query Builder
举报原因:
原因补充:

(最多只允许输入30个字)