where方法的用法是ThinkPHP查询语言的精髓,也是ThinkPHP ORM的重要组成部分和亮点所在,可以完成包括普通查询、表达式查询、快捷查询、区间查询、组合查询在内的查询操作。where方法的参数支持字符串和数组,虽然也可以使用对象但并不建议。

表达式查询

新版的表达式查询采用全新的方式,查询表达式的使用格式:

  1. Db::table('think_user')
  2. ->where('id','>',1)
  3. ->where('name','thinkphp')
  4. ->select();

更多的表达式查询语法,可以参考查询语法部分。

数组条件

可以通过数组方式批量设置查询条件。

普通查询

最简单的数组查询方式如下:

  1. $map['name'] = 'thinkphp';
  2. $map['status'] = 1;
  3. // 把查询条件传入查询方法
  4. Db::table('think_user')->where($map)->select();
  5. // 助手函数
  6. db('user')->where($map)->select();

最后生成的SQL语句是

  1. SELECT * FROM think_user WHERE `name`='thinkphp' AND status=1

表达式查询

可以在数组条件中使用查询表达式,例如:

  1. $map['id'] = ['>',1];
  2. $map['mail'] = ['like','%thinkphp@qq.com%'];
  3. Db::table('think_user')->where($map)->select();

字符串条件

使用字符串条件直接查询和操作,例如:

  1. Db::table('think_user')->where('type=1 AND status=1')->select();

最后生成的SQL语句是

  1. SELECT * FROM think_user WHERE type=1 AND status=1

使用字符串条件的时候,建议配合预处理机制,确保更加安全,例如:

  1. Db::table('think_user')->where("id=:id and username=:name")->bind(['id'=>[1,\PDO::PARAM_INT],'name'=>'thinkphp'])->