Yii2.0中文开发向导——Where条件查询全解析
在Yii的Model里进行查询的时候 where是必不可少的。
Where方法声明为
- static where( $condition )
其中参数 $condition类型为字符串或者数组
1、字符串
字符串是最简单的,直接按sql中的where条件写就可以,如
- $condition = 'name=\'zhidemy.com\' and age>10';
2、数组
如果是数组的情况下,有两种格式的写法。
- name-value格式的字典数组:['column1' => value1, 'column2' => value2, ...]
- 逻辑操作符格式:[operator, operand1, operand2, ...]
第一种写法:
如果value值是字符串或者数字等,那么生成的条件语句格式为column1=value1 AND column2=value2 AND ....
['type' => 1, 'status' => 2]
//生成
(type = 1) AND (status = 2)
如果value值是数组,那么会生成sql 中的IN语句;
['id' => [1, 2, 3], 'status' => 2]
//生成
(id IN (1, 2, 3)) AND (status = 2)
如果value值为Null,那么会生成 Is Null语句。
['status' => null]
//生成
status IS NULL
第二种写法会根据不同的操作符生成不同的sql条件。
- and: 会使用 AND把所有的操作数连接起来。如
['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)
注意:这个方法不会对进行引用或者编码操作。
- or: 和 and 类似,只不过是用 OR来连接操作数。
- between: 第一个操作数是列的名称,第二个和第三个操作数为范围的最小值和最大值。如
['between', 'id', 1, 10]
//生成
id BETWEEN 1 AND 10
- not between: 和between 相似。
- in: 第一个操作数为列或者DB表达式,第二个操作数为数组, 如
['in', 'id', [1, 2, 3]]
//生成
id IN (1, 2, 3)
注意:这个方法会对列进行引用,对数组中的值也会编码。
- not in: 和上面的in 相似。
- like: 第一个操作数为列或者DB表达式,第二个操作数为字符串或者数组如
['like', 'name', 'tester']
//生成
name LIKE '%tester%'
如果值是数组的话,会生成多个like语句,并用 AND来连接。如
['like', 'name', ['test', 'sample']]
//生成
name LIKE '%test%' AND name LIKE '%sample%'
注意:这个方法会对列进行引用,对数组中的值也会编码。
有时候你可能需要自己来处理%,那么可以用第三个参数:['like', 'name', '%tester', false]
//生成
name LIKE '%tester'
- or like: 和like相似,只是在第二个参数为数组的情况下用or来连接多个like 语句。
- not like: 和like 相似。
- or not like: 和or like 相似。
Yii2.0中文开发向导——Where条件查询全解析的更多相关文章
- Yii2.0中文开发向导——Yii2中多表关联查询(join、joinwith)(转)
我们用实例来说明这一部分 表结构 现在有客户表.订单表.图书表.作者表, 客户表Customer (id customer_name) 订单表Order (id order_ ...
- Yii2.0中文开发向导——Yii2中多表关联查询(join、joinwith)
我们用实例来说明这一部分 表结构 现在有客户表.订单表.图书表.作者表, 客户表Customer (id customer_name) 订单表Order (id order_ ...
- Yii2.0中文开发向导——删除数据
直接 model 删除 $model = User::find($id); $model->delete(); 带有条件的删除 $connection ->createCommand() ...
- Yii2.0中文开发向导——自定义日志文件写日志
头部引入log类use yii\log\FileTarget; $time = microtime(true);$log = new FileTarget();$log->logFile = Y ...
- Yii2.0中文开发向导——rules常用规则
public function rules(){ return [ //必须填写 ['email, username, password,agree,verifyPassword,verifyCode ...
- Yii2.0中文开发向导——控制器(Controller)
控制器(Controller) 本节包含以下方面的内容 基本概念 路由 默认路由 动作的参数 在动作中定义参数 从请求(request)中获取参数 独立动作 动作过滤器(Action Filters) ...
- MySQL慢日志查询全解析:从参数、配置到分析工具【转】
转自: MySQL慢日志查询全解析:从参数.配置到分析工具 - MySQL - DBAplus社群——围绕数据库.大数据.PaaS云,运维圈最专注围绕“数据”的学习交流和专业社群http://dbap ...
- 22.Yii2.0框架多表关联一对一查询之hasOne
思路: 通过文章查它对应的分类信息 一对一的关系 控制器里 //一对一关联查询 public function actionRelatesone() { //方法一,hasOne() 用查一条文章的结 ...
- 2016/3/30 租房子 ①建立租房子的增、删、改php页面 ②多条件查询 ③全选时 各部分全选中 任意checkbox不选中 全选checkbox不选中
字符串的另一种写法:<<<AAAA; 后两个AA回车要求顶格 不然报错 例子: <!DOCTYPE html> <html lang="en" ...
随机推荐
- 跨集群 distcp命令
两个集群之间做数据同步,而且两个集群之间的版本不一致,这个时候使用的是hftp协议或者webhdfs协议! 如果试图在两个运行着不同HDFS版本的集群上使用distcp命令来复制数据并使用hdfs协议 ...
- GitHub上删除项目
1. 在自己的repositories中,选择要删除的项目,左击. 2. 选择 [Settings] 3. 选择 [Delete ** ] 4. 在弹出框中 输入 要删除的项目名,点击下方的按钮 ...
- CMD和DOS的区别
很多人喜欢在这里把XP下的CMD和我们的DOS混淆,因此今天我特别发帖说明:CMD和DOS是完全不同的!请各位始终牢记这一点,否则在高手面前就丢人了!因为CMD是32位应用程序(而DOS是16位操作系 ...
- 一次有趣的XSS漏洞挖掘分析(3)最终篇
这真是最后一次了.真的再不逗这个程序员了.和预期一样,勤奋的程序员今天又更新程序了.因为前面写的payload都有一个致命的弱点,就是document.write()会完全破坏DOM结构.而且再“完事 ...
- DG配置实验
1.配置主库环境 2.为备库创建备份文件 3.启动主备库验证配置 4.DG测试 5.DG主备库切换 6.DG主备库第二次切换
- bzoj3594: [Scoi2014]方伯伯的玉米田--树状数组优化DP
题目大意:对于一个序列,可以k次选任意一个区间权值+1,求最长不下降子序列最长能为多少 其实我根本没想到可以用DP做 f[i][j]表示前i棵,操作j次,最长子序列长度 p[x][y]表示操作x次后, ...
- 2016HUAS暑假集训训练2 O - Can you find it?
题目链接:http://acm.hust.edu.cn/vjudge/contest/121192#problem/O 这道题是一道典型二分搜素题,题意是给定3个数组 每个数组的数有m个 再给定l个s ...
- Empire C:Basic 2
作为人与计算机沟通的媒介,C语言给我们呈现了:printf.scanf.以及缓冲区. 1.printf("%d",a) %d:d是decimal base(十进制)的开头字母,意思 ...
- ArGIS Server 服务的更新
对于普通地图服务更新 [产品版本]:arcgis for server 10.1,10.1 sp1,10.2及以上 [问题分析]: 由于在10.1中地图服务的发布采用的是msd的形式,也就是虽然在Ar ...
- do put in ruby
apikey: XO.apikeys.cms, data: { favoriteItems: [{ UserId: SaveToFavoriteVar.content.FavoriteItem.Use ...