Yii2 数据操作Query Builder
转载地址:
http://blog.csdn.net/hzqghost/article/details/44117081
Yii2 数据操作Query Builder
Query Builder
- $rows = (new \yii\db\Query())
- ->select(['dyn_id', 'dyn_name'])
- ->from('zs_dynasty')
- ->where(['between','dyn_id', 1,30])
- ->limit(10)
- ->all();
- print_r($rows);
- use yii\db\Query;
- $query = (new Query())
- ->from('user')
- ->orderBy('id');
SELECT
- $query->select('*')->
- select('dyn_id as id, dynasty.dyn_name')->
- $query->select(['dyn_id as id', "CONCAT(dyn_name,'a')"])->
- $query->select('user_id')->distinct()->
FORM
- $query->from('user');
- $query->from(['public.user u', 'public.post p']);
- $query->from('public.user u, public.post p');
- $query->from(['u' => 'public.user', 'p' => 'public.post']);
- ----------
- $subQuery = (new Query())->select('id')->from('user')->where('status=1');
- // SELECT * FROM (SELECT `id` FROM `user` WHERE status=1) u
- $query->from(['u' => $subQuery]);
WHERE
- where('status=1')->
- where('status=:status', [':status' => $status])->
- where([
- 'status' => 10,
- 'type' => null,
- 'id' => [4, 8, 15],
- ])->
- -------
- $userQuery = (new Query())->select('id')->from('user');
- // ...WHERE `id` IN (SELECT `id` FROM `user`)
- $query->...->where(['id' => $userQuery])->...
- --------
- ['and', 'id=1', 'id=2'] //id=1 AND id=2
- ['and', 'type=1', ['or', 'id=1', 'id=2']] //type=1 AND (id=1 OR id=2)
- ['between', 'id', 1, 10] //id BETWEEN 1 AND 10
- ['not between', 'id', 1, 10] //not id BETWEEN 1 AND 10
- ['in', 'id', [1, 2, 3]] //id IN (1, 2, 3)
- ['not in', 'id', [1, 2, 3]] //not id IN (1, 2, 3)
- ['like', 'name', 'tester'] //name LIKE '%tester%'
- ['like', 'name', ['test', 'sample']] //name LIKE '%test%' AND name LIKE '%sample%'
- ['not like', 'name', ['or', 'test', 'sample']] //not name LIKE '%test%' OR not name LIKE '%sample%'
- ['exists','id', $userQuery] //EXISTS (sub-query) | not exists
- ['>', 'age', 10] //age>10
ADD WHERE
- $status = 10;
- $search = 'yii';
- $query->where(['status' => $status]);
- if (!empty($search)) {
- $query->andWhere(['like', 'title', $search]);
- }
- //WHERE (`status` = 10) AND (`title` LIKE '%yii%')
- //andWhere() or orWhere()
FILTER WHERE
- $query->filterWhere([
- 'username' => $username,
- 'email' => $email,
- ]);
- //如果email为空,则 WHERE username=:username
ORDER BY
- $query->orderBy([
- 'id' => SORT_ASC,
- 'name' => SORT_DESC,
- ]);
- //orderBy , addOrderBy
GROUP BY
- $query->groupBy('id, status');
- $query->addGroupBy(['created_at', 'updated_at']);
HAVING
- $query->having(['status' => $status]);
- //having,andHaving,orHaving
LIMIT OR OFFSET
- $query->limit(10);
- $query->offset(10);
JOIN
- innerJoin()
- leftJoin()
- rightJoin()
- $query->select(['user.name AS author', 'post.title as title'])
- ->from('user')
- ->leftJoin('post', 'post.user_id = user.id');
- $query->join('FULL OUTER JOIN', 'post', 'post.user_id = user.id');
- $query->leftJoin(['u' => $subQuery], 'u.id=author_id');
UNION
- $query = new Query();
- $query->select("id, category_id as type, name")->from('post')->limit(10);
- $anotherQuery = new Query();
- $anotherQuery->select('id, type, name')->from('user')->limit(10);
- $query->union($anotherQuery);
QUERY METHODS
- all() //所有行列
- one() //第一行
- column() //第一列
- scalar() //第一行第一列
- exists() //是否有结果存在
- count() //记录数量
- sum($q), average($q), max($q), min($q) //$q 为字段或表达式
- $count = (new \yii\db\Query())
- ->from('user')
- ->where(['last_name' => 'Smith'])
- ->count();
- //SELECT COUNT(*) FROM `user` WHERE `last_name`=:last_name
- $command = (new \yii\db\Query())
- ->select(['id', 'email'])
- ->from('user')
- ->where(['last_name' => 'Smith'])
- ->limit(10)
- ->createCommand();
- // show the SQL statement
- echo $command->sql;
- // show the parameters to be bound
- print_r($command->params);
- // returns all rows of the query result
- $rows = $command->queryAll();
- use yii\db\Query;
- $query = (new Query())
- ->from('user')
- ->indexBy('username');
- foreach ($query->batch() as $users) {
- // $users is indexed by the "username" column
- }
- foreach ($query->each() as $username => $user) {
- }
- use yii\db\Query;
- $query = (new Query())
- ->from('user')
- ->orderBy('id');
- foreach ($query->batch() as $users) {
- // batch( $batchSize = 100, $db = null )
- // 一个批次取100行
- }
- foreach ($query->each() as $user) {
- // 一行一行取
- }
Yii2 数据操作Query Builder的更多相关文章
- [moka同学笔记]Yii2 数据操作Query Builder 2
Query Builder $rows = (new \yii\db\Query()) ->select(['dyn_id', 'dyn_name']) ->from('zs_dynast ...
- [moka同学笔记]Yii2 数据操作Query Builder
Query Builder [php] view plain copy $rows = (new \yii\db\Query()) ->select(['dyn_id', 'dyn_name ...
- Yii2 数据操作Query Builder(转)
Query Builder $rows = (new \yii\db\Query()) ->select(['dyn_id', 'dyn_name']) ->from('zs_dynast ...
- Yii2 数据操作Query Builder查询数据
Query Builder $rows = (new \yii\db\Query()) ->select(['dyn_id', 'dyn_name']) ->from('zs_dynast ...
- Yii2 数据操作DAO
参考: http://www.yiiframework.com/doc/guide/1.1/zh_cn/database.dao http://blog.csdn.net/hzqghost/artic ...
- Yii2 三层设计模式:SQL Command、Query builder、Active Record(ORM)
用Yii2也有一段时间了,发现Yii2 Framework对Database的操作有非常良好的结构和弹性. 接下来介绍三种数据库操作方式. SQL Command Level: // Get DB c ...
- Studio 3T 如何使用 Query Builder 查询数据
Studio 3T 是一款对 MongoDB 进行数据操作的可视化工具. 在 Studio 3T 中,我们可以借助 Query Builder 的 Drag & Drop 来构建查询条件. 具 ...
- Yii的学习(3)--查询生成器 (Query Builder)
原文地址:http://www.yiiframework.com/doc/guide/1.1/en/database.query-builder 不过原文是英文的,Yii的官网没有翻译这一章,自己就尝 ...
- Yii Query Builder insert()、update()、delete()使用
Yii自带的query builder还是很好用的,省去了拼sql的过程,今天在写一个语句的时候遇到这样一个问题 $connection = Yii::app()->db; $command = ...
随机推荐
- Java的移位运算符
1.左移运算符:<< 丢弃左边指定位数,右边补0. 注意: 当int类型进行左移操作时,左移位数大于等于32位操作时,会先求余(%)后再进行左移操作.也就是说左移32位相当于不进行移位操作 ...
- Redis实现缓存,你应该懂的哪些思路!
场景一:类似于微博,实现关注和被关注功能. 思路: 对每个用户使用两个集合类型键,用来存储关注别人的用户和被该用户关注的用户.当用户A关注用户B的时候,执行两步操作: sadd user:A B sa ...
- 【bzoj1520】[POI2006]Szk-Schools 费用流
题目描述 输入 输出 如果有可行解, 输出最小代价,否则输出NIE. 样例输入 5 1 1 2 3 1 1 5 1 3 2 5 5 4 1 5 10 3 3 3 1 样例输出 9 题解 费用流 设xi ...
- windows系统——常用命令
1.cleanmgr: 打开磁盘清理工具2.compmgmt.msc: 计算机管理3.conf: 启动系统配置实用程序4.charmap: 启动字符映射表5.calc: 启动计算器6.chkdsk.e ...
- iOS-Cocoapods更新不及时
一.问题 使用cocoapods搜索某些库时,搜索到的版本低于Github上面的版本,这样会导致一些问题.例如我在使用一个LTNavigationBar这个库时,在我升级到iOS10的时候,会导致导航 ...
- Vue的this.$root.Bus.$on事件被多次触发、多次监听的问题
前端vue项目中,各个组件(非父子关系也可)之间可以通过Bus进行事件通信. main.js中: import Vue from 'vue' const Bus = new Vue(); const ...
- js 清空div
document.getElementById('BIGDraw').innerHTML = ""; $('#BIGDraw').html(""); $('#B ...
- 51Nod 1001 数组中和等于K的数对 And 1015 水仙花数
1001 数组中和等于K的数对 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数,找出数组A中所有和等于K ...
- 图片上传封装类【包括图片上传和缩略图上传】.NET
原文发布时间为:2009-08-30 -- 来源于本人的百度文章 [由搬家工具导入] #region 上传图片及上传缩略图 public class UpFile : System.Web.UI ...
- .net显示今天农历的代码!
原文发布时间为:2010-04-11 -- 来源于本人的百度文章 [由搬家工具导入] using System;using System.Globalization;//namespace Proje ...