在Yii的Model里进行查询的时候 where是必不可少的。
Where方法声明为

  1. static where( $condition )

其中参数 $condition类型为字符串或者数组

1、字符串
字符串是最简单的,直接按sql中的where条件写就可以,如

  1. $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条件查询全解析的更多相关文章

  1. Yii2.0中文开发向导——Yii2中多表关联查询(join、joinwith)(转)

    我们用实例来说明这一部分 表结构 现在有客户表.订单表.图书表.作者表, 客户表Customer   (id  customer_name) 订单表Order          (id  order_ ...

  2. Yii2.0中文开发向导——Yii2中多表关联查询(join、joinwith)

    我们用实例来说明这一部分 表结构 现在有客户表.订单表.图书表.作者表, 客户表Customer   (id  customer_name) 订单表Order          (id  order_ ...

  3. Yii2.0中文开发向导——删除数据

    直接 model 删除 $model = User::find($id); $model->delete(); 带有条件的删除 $connection ->createCommand() ...

  4. Yii2.0中文开发向导——自定义日志文件写日志

    头部引入log类use yii\log\FileTarget; $time = microtime(true);$log = new FileTarget();$log->logFile = Y ...

  5. Yii2.0中文开发向导——rules常用规则

    public function rules(){ return [ //必须填写 ['email, username, password,agree,verifyPassword,verifyCode ...

  6. Yii2.0中文开发向导——控制器(Controller)

    控制器(Controller) 本节包含以下方面的内容 基本概念 路由 默认路由 动作的参数 在动作中定义参数 从请求(request)中获取参数 独立动作 动作过滤器(Action Filters) ...

  7. MySQL慢日志查询全解析:从参数、配置到分析工具【转】

    转自: MySQL慢日志查询全解析:从参数.配置到分析工具 - MySQL - DBAplus社群——围绕数据库.大数据.PaaS云,运维圈最专注围绕“数据”的学习交流和专业社群http://dbap ...

  8. 22.Yii2.0框架多表关联一对一查询之hasOne

    思路: 通过文章查它对应的分类信息 一对一的关系 控制器里 //一对一关联查询 public function actionRelatesone() { //方法一,hasOne() 用查一条文章的结 ...

  9. 2016/3/30 租房子 ①建立租房子的增、删、改php页面 ②多条件查询 ③全选时 各部分全选中 任意checkbox不选中 全选checkbox不选中

    字符串的另一种写法:<<<AAAA; 后两个AA回车要求顶格  不然报错 例子: <!DOCTYPE html> <html lang="en" ...

随机推荐

  1. (JavaScript 2.0: The Complete Reference, Second Edition)javascript 2.0完全手册第二版 翻译说明

    1,译文中javascript简称js. 2,本人翻译时将信息提炼加工,保留主要信息,个别地方可能与原文有出入. 3,为督促自己学习Javascript,从今天起每天翻译一些,每天更新. 下面是文章每 ...

  2. [LintCode] Left Pad 左填充

    You know what, left pad is javascript package and referenced by React: Github link One day his autho ...

  3. 【转】Selenium WebDriver + Python 环境

    转自:http://www.myext.cn/webkf/a_11878.html 1. 下载必要工具及安装包 1.1 [Python开发环境] 下载并安装Python 2.7.x版本 下载地址:ht ...

  4. Sqoop_ 从 hive 导到mysql常遇九问题总结(转)

    以前以为版本不同,遇到的问题就不同,后来发现,无论是新版本,还是老版本,遇到的问题大部分都是相同的.下面解决问题的方法仅供借鉴 1.拒绝连接的错误表现是什么?2.表不存在该如何解决?3.null字段填 ...

  5. Android:理解Fragment

    最近都在公司搞测试,静不下心来学android.今天就把Fragment搞懂吧. Fragment的几点要点: 1.用于大屏幕平板,容纳更多组件,可复用2.Fragment必须嵌入Activity中 ...

  6. C# @符号的作用, 可定义关键字为变量名

    一 字符串中的用法字符@表示,其后的字符串是个“逐字字符串”(verbatim string).@只能对字符串常量作用.1.用于文件路径以下是引用片段:string s_FilePath =" ...

  7. get_magic_quotes_gpc()

    php get_magic_quotes_gpc()函数:http://www.cnblogs.com/lsk/archive/2008/05/05/1184117.html 以及addslashes ...

  8. oracle 字符乱码问题解决方案

    今天在客户服务器上遇到了oracle中文乱码问题,第一个想到的是:要想避免oracle字符乱码的问题,需要注意oracle客户端的字符编码和服务端的字符编码保持一致. 于是操作如下: 1.查看服务端字 ...

  9. Unity UGUI 裁剪TTF字体

    BitBucket上找到了一个perl工程,font-optimizer.拉取代码到本地.为了运行它,还需要装Perl解释器,可以在Perl的官网上下载ActivePerl.装好ActivePerl后 ...

  10. BizTalk动手实验(十)业务活动监控(BAM)演示

    1 课程简介 通过本课程熟悉业务活动监控(BAM)的使用及各组件的配置. (本环境为Windows 2008 32位操作系统环境 + Visual Studio 2010 + BizTalk 210) ...