本文转自:https://www.yiichina.com/tutorial/1405

官方文档:http://www.yiichina.com/doc/guide/2.0/db-query-builder

文章涉及where、 addParams 、filterWhere 、andWhere、orWhere、 andFilterWhere()、 orFilterWhere()、andFilterCompare()
但是格式是一样的

字符串格式,例如:'status=1'
哈希格式,例如: ['status' => 1, 'type' => 2]
操作符格式,例如:['like', 'name', 'test']

字符串和哈希格式很好理解,我们来看看操作符格式,因为操作符格式可以组成相对复杂的查询语句
最简单的就是官方给的例子

$status = 10;
$search = 'yii';

$query->where(['status' => $status]);

if (!empty($search)) {
    $query->andWhere(['like', 'title', $search]);
}
生成的语句就是
... WHERE (`status` = 10) AND (`title` LIKE '

操作符格式

[操作符, 操作数1, 操作数2, ...]
0cb4d39e-418f-4183-a900-8a4ab5b1aadf.png

第一个参数是操作符
操作符包括and、or、 like、in、 between等
第二个第三个都是操作数

第一种最简单的就是上面提到的例子
 andWhere(['like', 'title','搜索的标题']);
生成的语句
... WHERE (`status` = 10) AND (`title` LIKE '
第二种
addWhere(['and', 'id=1', 'name=2']);
生成的语句
... WHERE id=1 AND name=2
第三种
addWhere(['and', 'type=1', ['or', 'id=1', 'id=2']]);
生成的语句
... WHERE type=1 AND (id=1 OR id=2);
第四种
->andWhere(['or like','name',['哈哈','苦苦']]);
生成的语句
 WHERE `name` LIKE '
 第五种
 addWhere(['or',['like','name','哈哈'],['like','title','苦苦']]);//操作符格式的嵌套
 生成的语句
... WHERE (`status`=1) AND ((`name` LIKE '



$query->andWhere(new Expression(‘FIND_IN_SET(‘1,size’)’));+
生成的语句
… WHERE id=1 AND FIND_IN_SET(1, size)
//size的值:1,2,3,4,5

Leave A Comment

Recommended Posts

Yii2.0中的COOKIE和SESSION用法

Yii2的Cookie主要是通过yii/web/Request和yii/web/Response进行操作的,Yii2的Session比较简单 ,直接通过/Yii::$app->session进行操作就好了。本文给大家介绍COOKIE和SESSION用法,需要的朋友参考下 1、Cookie Yii2的Cookie主要是通过yii/web/Request和yii/web/Response进行操作的 ,通过/Yii::$app->response->getCookies()->add()添加Cookie,通过/Yii::$app->request->cookies读取Cookie. 1)添加一个Cookie 2) 读取一个Cookie 3) 删除Cookie 4) 注意 对Cookie进行增删改时调用的response , 对Cookie读取时使用的是Request 2、Session Yii2的Session比较简单 ,直接通过/Yii::$app->session进行操作就好了 1) 添加一个session 2) 读取一个session 3) 删除Session

blueidea