thinkphp5-数据库
基本使用
mysql生成数据库
create database tp5;
use tp5;
mysql生成数据表
create table user(
id int unsigned NOT NULL AUTO_INCREMENT,
name varchar(100),
status tinyint(2),
primary key(id)
)engine=innodb charset=utf8mb4;
数据库配置
<?php
return [
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => '127.0.0.1',
// 数据库名
'database' => 'tp5',
// 用户名
'username' => 'root',
// 密码
'password' => 'root_123456',
// 端口
'hostport' => '',
// 连接dsn
'dsn' => '',
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => 'utf8',
// 数据库表前缀
'prefix' => '',
// 数据库调试模式
'debug' => true,
// 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
'deploy' => 0,
// 数据库读写是否分离 主从式有效
'rw_separate' => false,
// 读写分离后 主服务器数量
'master_num' => 1,
// 指定从服务器序号
'slave_no' => '',
// 自动读取主库数据
'read_master' => false,
// 是否严格检查字段是否存在
'fields_strict' => true,
// 数据集返回类型
'resultset_type' => 'array',
// 自动写入时间戳字段
'auto_timestamp' => false,
// 时间字段取出后的默认时间格式
'datetime_format' => 'Y-m-d H:i:s',
// 是否需要进行SQL性能分析
'sql_explain' => false,
];
命名空间
use think\Db;
添加数据
Db::execute('insert into user (name,status) values (:name,:status)',['name'=>'huyongjian1','status'=>1]);
Db::execute('insert into user (name,status) values (:name,:status)',['name'=>'huyongjian2','status'=>1]);
Db::execute('insert into user (name,status) values (:name,:status)',['name'=>'huyongjian3','status'=>1]);
获取数据
$user = Db::query('select * from user where id=:id',['id'=>1]);
dump($user);
查询构造器
查询数据
获取一条数据
$user = Db::table('user')->where('id',2)->find();
dump($user);
获取多条数据
$users = Db::table('user')->where('status',1)->select();
dump($users);
添加数据
添加一条数据
$data = ['name' => 'huyongjian3', 'status' => 1];
Db::table('user')->insert($data);
添加多条数据
$data = [
['name' => 'huyongjian4', 'status' => 1],
['name' => 'huyongjian5', 'status' => 0],
['name' => 'huyongjian6', 'status' => 1],
];
Db::table('user')->insertAll($data);
更新数据
Db::table('user')->where('id', 1)->update(['name' => 'huyongjian1']);
删除数据
Db::table('user')->delete(1);
Db::table('user')->where('id',1)->delete();
聚合查询
Db::table('user')->count();
Db::table('user')->max('id');
Db::table('user')->min('id');
Db::table('user')->avg('id');
时间查询
Db::table('user')->whereTime('birthday', '>=', '1970-10-1')->select();
// 小于某个时间
Db::table('user')->whereTime('birthday', '<', '2000-10-1')->select();
// 时间区间查询
Db::table('user')->whereTime('birthday', 'between', ['1970-10-1', '2000-10-1'])->select();
// 不在某个时间区间
Db::table('user')->whereTime('birthday', 'not between', ['1970-10-1', '2000-10-1'])->select();
查询事件
Query::event('before_select',function($options,$query){
//$options 当前查询数组信息
//$query query对象
//事件处理
});
事务
自动事务处理
Db::transaction(function(){
Db::table('user')->find(1);
Db::table('user')->delete(1);
});
手动事务处理
// 启动事务
Db::startTrans();
try{
Db::table('user')->find(1);
Db::table('user')->delete(1);
// 提交事务
Db::commit();
} catch (\Exception $e) {
// 回滚事务
Db::rollback();
}

浙公网安备 33010602011771号