ThinkPHP6.0查询构造器基于Db类实现轻量灵活的数据库操作,支持链式查询、复杂条件(数组/闭包)、增删改、原生SQL及参数绑定,无需模型类,适合快速开发与中低复杂度场景。

ThinkPHP6.0 的查询构造器(Query Builder)是操作数据库最常用、最灵活的方式之一,它不依赖模型类,直接基于 Db 类构建 SQL 查询,适合简单查询、动态条件拼接或非模型场景。
基础查询:Db::table() + 链式方法
使用 Db::table() 指定数据表,再通过链式方法添加查询条件、字段、排序等:
-
查全部:
Db::table('user')->select(); -
查单条:
Db::table('user')->where('id', 1)->find(); -
查指定字段:
Db::table('user')->field('id,name,email')->select(); -
带条件查询:
Db::table('user')->where('status', 1)->where('age', '>=', 18)->order('id desc')->limit(10)->select();
复杂条件:数组/闭包写法与多条件组合
当 WHERE 条件较复杂时,推荐用数组或闭包方式,避免链式调用混乱:
-
数组条件:
Db::table('user')->where(['status' => 1, ['age', '>=', 18]])->select(); -
闭包嵌套(AND/OR 分组):
Db::table('user')->where(function ($query) { $query->where('status', 1) ->whereOr('level', 'vip'); })->select(); -
IN、BETWEEN、LIKE 等支持原生写法:
Db::table('user')->where('id', 'in', [1,2,3])->where('name', 'like', '%admin%')->select();
增删改操作:统一使用 Db::table()
增删改同样通过查询构造器完成,语义清晰、无需手写 SQL:
-
插入单条:
Db::table('user')->insert(['name' => '张三', 'email' => 'z3@example.com']); -
批量插入:
Db::table('user')->insertAll([['name'=>'李四'], ['name'=>'王五']]); -
更新:
Db::table('user')->where('id', 5)->update(['status' => 0]);(字段名自动识别,也可传完整数据数组) -
删除:
Db::table('user')->where('status', 0)->delete();(支持软删除需配合模型)
高级用法:原生 SQL 与参数绑定
必要时可混用原生 SQL,同时保障安全性:
-
原生查询(带参数绑定):
Db::query("SELECT * FROM user WHERE status = ? AND age > ?", [1, 18]); -
原生执行(INSERT/UPDATE/DELETE):
Db::execute("UPDATE user SET name = ? WHERE id = ?", ['新名字', 10]); -
注意:参数绑定用
?占位,避免拼接字符串,防止 SQL 注入。
查询构造器在 TP6 中轻量、直观、兼容性好,适合快速开发和中低复杂度业务。不需要模型类参与,也不强制 ORM 思维,用对了效率不输模型操作。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











