一、操作数据库
1、数据库连接配置
数据库默认的相关配置在项目的applicationdatabase.php
中已经定义好。 只需要在模块的数据库配置文件中配置好当前模块需要连接的数据库的配置参数即可。
模块的数据库配置文件的路径为:
application/index/database.php
配置参数 如:数据库名称和端口号
return [ // 数据库名 'database' => 'test', // 端口 'hostport' => 3306 ];
2、查看数据库配置详情
打印config('database')
即可查看所有配置
3、连接数据库
$res = Db::connect();
注意:
- 需要在文件头引入
Db
类。引入方式为:use thinkDb;
- TP5是憜性加载,即此时虽然已经可以查看到连接数据库的参数信息,但即使配置参数有问题(如数据库不存在)时不会有错误提示。
4、查询数据
(1)运行原生SQL语句(query()查询)
1)支持参数绑定
Db::query('select * from think_user where id=?',[8]);
2)支持命名占位符绑定
Db::query('select * from think_user where id=:id',['id'=>8]);
3)支持多个数据库连接
Db::connect($config)->query('select * from think_user where id=:id',['id'=>8]);
(2)查询构造器
1)查询一条数据(结果不存在时,返回null)
Db::table('think_user')->where('status',1)->find();
【定义了数据表前缀】
Db::name('user')->where('status',1)->find();
【助手函数:默认每次都会重新连接数据库】
db('user')->where('status',1)->find();
【助手函数:使用第三个参数进行单例化,使得每次使用不再重新连接数据库】
db('user',[],false)->where('status',1)->find();
【使用查询对象进行查询】
$query = new hinkdbQuery(); $query->table('think_user')->where('status',1); Db::find($query);
【直接使用闭包函数】
Db::find(function($query){ $query->table('think_user')->where('status',1); });
2)查询多条数据(结果不存在时,返回空数组)
Db::table('think_user')->where('status',1)->select();
【定义了数据表前缀】
Db::name('user')->where('status',1)->select();
【助手函数:默认每次都会重新连接数据库】
db('user')->where('status',1)->select();
【助手函数:使用第三个参数进行单例化,使得每次使用不再重新连接数据库】
db('user',[],false)->where('status',1)->select();
【使用查询对象进行查询】
$query = new hinkdbQuery(); $query->table('think_user')->where('status',1); Db::select($query);
【直接使用闭包函数】
Db::select(function($query){ $query->table('think_user')->where('status',1); });
3)查询某个字段的值
Db::table('think_user')->where('id',1)->value('name');
4)查询某一列的值
Db::table('think_user')->where('status',1)->column('name');
5)查询多列的值
Db::table('think_user')->where('status',1)->field('id,name')->select(); //查询id和name两列的所有记录
6)数据集分批处理
7)JSON类型数据查询
5、添加数据
(1)添加一条数据insert()
----添加成功返回1
$data = ['foo' => 'bar', 'bar' => 'foo']; Db::table('think_user')->insert($data);
(2)添加多条数据insertAll()
----添加成功返回添加成功的记录条数
$data = [ ['foo' => 'bar', 'bar' => 'foo'], ['foo' => 'bar1', 'bar' => 'foo1'], ['foo' => 'bar2', 'bar' => 'foo2'] ]; Db::name('user')->insertAll($data);
(3)助手函数
// 添加单条数据 db('user')->insert($data); // 添加多条数据 db('user')->insertAll($list);
(4)快捷更新(V5.0.5+)
Db::table('data') ->data(['name'=>'tp','score'=>1000]) ->insert();