数据库环境配置文件 .env
[DATABASE] USERNAME = root PASSWORD = root
数据库配置文件 config/database.php
<?php return [ // 默认使用的数据库连接配置 'default' => env('database.driver', 'mysql'), // 自定义时间查询规则 'time_query_rule' => [], // 自动写入时间戳字段 // true为自动识别类型 false关闭 // 字符串则明确指定时间字段类型 支持 int timestamp datetime date 'auto_timestamp' => true, // 时间字段取出后的默认时间格式 'datetime_format' => 'Y-m-d H:i:s', // 时间字段配置 配置格式:create_time,update_time 'datetime_field' => '', // 数据库连接配置信息 'connections' => [ 'mysql' => [ // 数据库类型 'type' => env('database.type', 'mysql'), // 服务器地址 'hostname' => env('database.hostname', '127.0.0.1'), // 数据库名 'database' => env('database.database', 'tp6'), // 用户名 'username' => env('database.username', 'root'), // 密码 'password' => env('database.password', 'root'), // 端口 'hostport' => env('database.hostport', '3306'), // 数据库连接参数 'params' => [], // 数据库编码默认采用utf8 'charset' => env('database.charset', 'utf8'), // 数据库表前缀 'prefix' => env('database.prefix', ''), // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器) 'deploy' => 0, // 数据库读写是否分离 主从式有效 'rw_separate' => false, // 读写分离后 主服务器数量 'master_num' => 1, // 指定从服务器序号 'slave_no' => '', // 是否严格检查字段是否存在 'fields_strict' => true, // 是否需要断线重连 'break_reconnect' => false, // 监听SQL 'trigger_sql' => env('app_debug', true), // 开启字段缓存 'fields_cache' => false, ], // 更多的数据库配置信息 ], ];
控制器 app/controller/Index.php
<?php namespace app\controller; use \think\facade\Db; class Index { public function index() { try{ $data = [ ['name' => 'huyongjian', 'status' => 1], ['name' => 'huyongjian2', 'status' => 1], ['name' => 'huyongjian3', 'status' => 1], ['name' => 'huyongjian4', 'status' => 1], ['name' => 'huyongjian5', 'status' => 1], ]; return Db::name('admin')->insertAll($data); }catch (\Exception $e){ var_dump($e->getMessage()); } } }
mysql 创建数据库和数据表
create database tp6;
create table admin( `id` bigint unsigned NOT NULL AUTO_INCREMENT, `name` varchar(150) DEFAULT NULL COMMENT '名称', `status` tinyint DEFAULT NULL COMMENT '状态', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
测试与结果
http://127.0.0.1:8000/index
5
查看MySQL数据库结果
mysql> select * from admin; +----+-------------+--------+ | id | name | status | +----+-------------+--------+ | 1 | huyongjian | 1 | | 2 | huyongjian2 | 1 | | 3 | huyongjian3 | 1 | | 4 | huyongjian4 | 1 | | 5 | huyongjian5 | 1 | +----+-------------+--------+ 5 rows in set (0.01 sec)
查询数据
Db::table('admin')->where('id', 3)->find();
Db::table('admin')->where('status', 1)->select();
Db::table('admin')->where('status', 1)->select()->toArray();
Db::table('admin')->where('status', 1)->value('name');
Db::table('admin')->where('status', 1)->column('name');
Db::table('admin')->chunk(3, function($users) { foreach ($users as $user) { var_dump($user); } });
添加数据
$data = ['name' => 'huyongjian6', 'status' => 0]; Db::name('admin')->save($data);
$data = ['name' => 'huyongjian7', 'status' => 0]; Db::name('admin')->insert($data);
$data = [ ['name' => 'huyongjian8', 'status' => 1], ['name' => 'huyongjian9', 'status' => 1] ]; Db::name('admin')->insertAll($data);
$data = [ ['name' => 'huyongjian8', 'status' => 1], ['name' => 'huyongjian9', 'status' => 1] ]; Db::name('admin')->limit(100)->insertAll($data);
更新数据
Db::name('admin')->save(['id'=>1,'name'=>'HuYongJian','status'=>0]);
Db::name('admin')->where(['id'=>1])->update(['name'=>'huyongjian','status'=>1]);
删除数据
Db::name('admin')->delete(1);
Db::name('admin')->delete([2,3]);
Db::name('admin')->where('id',4)->delete();
Db::name('admin')->where('id','<', 6)->delete();
查询表达式
表达式 含义 快捷查询方法 = 等于 <> 不等于 > 大于 >= 大于等于 < 小于 <= 小于等于 [NOT] LIKE 模糊查询 whereLike/whereNotLike [NOT] BETWEEN (不在)区间查询 whereBetween/whereNotBetween [NOT] IN (不在)IN 查询 whereIn/whereNotIn [NOT] NULL 查询字段是否(不)是NULL whereNull/whereNotNull [NOT] EXISTS EXISTS查询 whereExists/whereNotExists [NOT] REGEXP 正则(不)匹配查询(仅支持Mysql) [NOT] BETWEEN TIME 时间区间比较 whereBetweenTime > TIME 大于某个时间 whereTime < TIME 小于某个时间 whereTime >= TIME 大于等于某个时间 whereTime <= TIME 小于等于某个时间 whereTime EXP 表达式查询,支持SQL语法 whereExp find in set FIND_IN_SET查询 whereFindInSet
聚合查询
Db::name('admin')->count();
Db::name('admin')->max('id');
Db::name('admin')->min('id');
Db::name('admin')->avg('id');
Db::name('admin')->sum('id');
分页查询
$list = Db::name('admin')->order('id', 'desc')->paginate(2); $page = $list->render(); return view('index', ['list' => $list, 'page' => $page]);
时间查询
// 大于某个时间 Db::name('admin') ->whereTime('birthday', '>=', '1970-10-1') ->select(); // 小于某个时间 Db::name('admin') ->whereTime('birthday', '<', '2000-10-1') ->select(); // 时间区间查询 Db::name('admin') ->whereTime('birthday', 'between', ['1970-10-1', '2000-10-1']) ->select(); // 不在某个时间区间 Db::name('admin') ->whereTime('birthday', 'not between', ['1970-10-1', '2000-10-1']) ->select();
// 查询两个小时内的博客 Db::name('blog') ->whereTime('create_time','-2 hours') ->select();
// 查询2017年上半年注册的用户 Db::name('user') ->whereBetweenTime('create_time', '2017-01-01', '2017-06-30') ->select(); // 查询不是2017年上半年注册的用户 Db::name('user') ->whereNotBetweenTime('create_time', '2017-01-01', '2017-06-30') ->select();
Db::name('user') ->whereYear('create_time') ->select();
Db::name('user') ->whereYear('create_time', 'last year') ->select();
// 查询2018年注册的用户 Db::name('user') ->whereYear('create_time', '2018') ->select();
Db::name('user') ->whereMonth('create_time') ->select();
Db::name('user') ->whereMonth('create_time','last month') ->select();
Db::name('user') ->whereMonth('create_time', '2018-06') ->select();
Db::name('user') ->whereWeek('create_time') ->select();
Db::name('user') ->whereWeek('create_time', 'last week') ->select();
// 查询2019-1-1到2019-1-7的注册用户 Db::name('user') ->whereWeek('create_time', '2019-1-1') ->select();
Db::name('user') ->whereDay('create_time') ->select();
Db::name('user') ->whereDay('create_time', 'yesterday') ->select();
// 查询2018年6月1日注册的用户 Db::name('user') ->whereDay('create_time', '2018-06-01') ->select();
// 查询有效期内的活动 Db::name('event') ->whereTime('start_time', '<=', time()) ->whereTime('end_time', '>=', time()) ->select();
高级查询
Db::table('think_user') ->where([ ['name', 'like', 'thinkphp%'], ['title', 'like', '%thinkphp'], ['id', '>', 0], ['status', '=', 1], ]) ->select();
$map1 = [ ['name', 'like', 'thinkphp%'], ['title', 'like', '%thinkphp'], ]; $map2 = [ ['name', 'like', 'kancloud%'], ['title', 'like', '%kancloud'], ]; Db::table('think_user') ->whereOr([ $map1, $map2 ]) ->select();
Db::transaction(function () { Db::table('admin')->find(6); Db::table('admin')->delete(7); });
// 启动事务 Db::startTrans(); try { Db::table('admin')->find(6); Db::table('admin')->delete(7); // 提交事务 Db::commit(); } catch (\Exception $e) { // 回滚事务 Db::rollback(); }