yii2 中where条件查询
在Yii的Model里进行查询的时候 where是必不可少的。 Where方法声明为
static where( $condition )
其中参数 $condition 类型为字符串或者数组
1、字符串
字符串是最简单的,直接按sql中的where条件写就可以,如
$condition = 'name=\'xiaoming\' 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 中where条件查询的更多相关文章
- C# 将Access中时间段条件查询的数据添加到ListView中
C# 将Access中时间段条件查询的数据添加到ListView中 一.让ListView控件显示表头的方法 在窗体中添加ListView 空间,其属性中设置:View属性设置为:Detail,Col ...
- Hibernate中的条件查询完成类
Hibernate中的条件查询有以下三个类完成: 1.Criteria:代表一次查询 2.Criterion:代表一个查询条件 3.Restrictions:产生查询条件的工具类
- SSM-MyBatis-13:Mybatis中多条件查询
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 实体类 public class Book { private Integer bookID; private ...
- ormlite 在android中 排序 条件查询
ormlite 在android中 排序 条件查询 all = dao.queryBuilder().orderBy("Id", true).where().eq("Ty ...
- Hibernate中的条件查询完毕类
Hibernate中的条件查询有下面三个类完毕: 1.Criteria:代表一次查询 2.Criterion:代表一个查询条件 3.Restrictions:产生查询条件的工具类
- ThinkPHP中 按条件查询后列表显示
最近在项目中遇到了需要根据下拉框的条件筛选出符合条件的数据,然后进行列表显示的问题. 在ThinkPHP中进行列表显示的传统过程:通过在后台控制器中查询出数据,然后通过$this->assign ...
- SQL中多条件查询括号的用途
界面: 代码 0 posted @ 2009-12-15 13:28 唔愛吃蘋果 阅读(8640) 评论(0) 编辑 收藏
- 【.Net】C# 将Access中时间段条件查询的数据添加到ListView中
一.让ListView控件显示表头的方法 在窗体中添加ListView 空间,其属性中设置:View属性设置为:Detail,Columns集合中添加表头中的文字. 二.利用代码给ListView添加 ...
- Mybatis-技术专区-中的条件查询createCriteria example里面的条件
之前用Mybatis框架反向的实体,还有实体里面的Example,之前只是知道Example里面放的是条件查询的方法,可以一直不知道怎么用,到今天才开始知道怎么简单的用. 在我们前台查询的时候会有许多 ...
随机推荐
- Oracle中select使用别名
1 .将字段用as转换成别名. 2 .直接在字段的名字后面跟别名. 3 .在字段后面用双引号引起的别名. 我的朋友 大鬼不动 最近访客 fhwlj kochiyas 大極星 Alz__ deser ...
- Python学习笔记5-元组Tuple
tuple和list非常类似,但是tuple一旦初始化就不能修改,它也没有append(),insert()这样的方法.其他获取元素的方法和list是一样的 元组是用圆括号括起来的,其中的元素之间用逗 ...
- Java四种会话跟踪技术
1.cookie:2.session:3.隐藏表单域:4.URL重写
- JqGrid 获取所有数据
jqGrid使用本地数据时,当jqGrid配置的rowNum小于本地总数据量(records属性记录总数据,可以通过records获取到本地总数据量),调用getRowData方法获取到的只是显示的部 ...
- 问道游戏-寻路CALL心得
寻路CALL查找几种方法 第一种 bp send 在小地图上点击重点.看看是否断下 断下这是最简单的 第二种 查找用户当前坐标内存地址下写入断点 通过堆栈追溯 运气好也可以找到 第三种 查找终点坐标地 ...
- Mysql 知识点总结
1.创建数据库 mysqladmin 下面是一个简单的例子,创建名为 yiibai_tutorials1 的数据库. D:\software\mysql--winx64\bin> mysq ...
- FluentNhibernate 不支持存储过程
一直以为没有使用FN进行存储过程的操作,这次因为后台首页想统计下数据,就利用了存储过程,但在使用中却发现FN目前还不支持存储过程(点击查看官方),没有办法,只能利用Fluent Configurati ...
- 【BZOJ4872】[Shoi2017]分手是祝愿 数学+期望DP
[BZOJ4872][Shoi2017]分手是祝愿 Description Zeit und Raum trennen dich und mich. 时空将你我分开.B 君在玩一个游戏,这个游戏由 n ...
- angular4 组件间通信
父传子用@input 子传父用@output 例:子组件 <p> <span *ngFor="let star of stars;let i=index" cla ...
- CentOS7.2安装配置FTP服务器VSFTP
1,查看系统版本 2,yum安装vsftpd yum -y install vsftpd 3,修改配置文件 vim /etc/vsftpd/vsftpd.conf local_enable=YES w ...