## 数据库配置
如果你是独立使用,首先需要配置数据库的连接参数,使用如下方式:
~~~
use think\facade\Db;
// 数据库配置信息设置(全局有效)
Db::setConfig([
// 默认数据连接标识
'default' => 'mysql',
// 数据库连接信息
'connections' => [
'mysql' => [
// 数据库类型
'type' => 'mysql',
// 主机地址
'hostname' => '127.0.0.1',
// 用户名
'username' => 'root',
// 数据库名
'database' => 'demo',
// 数据库编码默认采用utf8
'charset' => 'utf8',
// 数据库表前缀
'prefix' => 'think_',
// 数据库调试模式
'debug' => true,
],
],
]);
~~~
如果你在ThinkPHP`6.0+`使用的话,无需动态设置,直接在`database.php`数据库配置文件中按如下方式定义即可。
~~~
return [
'default' => 'mysql',
'connections' => [
'mysql' => [
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => '127.0.0.1',
// 数据库名
'database' => 'thinkphp',
// 数据库用户名
'username' => 'root',
// 数据库密码
'password' => '',
// 数据库连接端口
'hostport' => '',
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => 'utf8',
// 数据库表前缀
'prefix' => 'think_',
],
],
];
~~~
> 当然在ThinkPHP里面可以使用环境变量来定义数据库连接配置信息
## 配置参数
数据库配置支持多个数据库连接,而`default`配置用于设置默认使用的数据库连接配置。`connections`则配置具体的数据库连接信息,`default`配置参数定义的连接配置必须要存在。
下面是默认支持的数据库连接参数:
| 参数名 | 描述 | 默认值 |
| --- | --- | --- |
| type | 数据库类型 | 无 |
| hostname | 数据库地址 | 127.0.0.1 |
| database | 数据库名称 | 无 |
| username | 数据库用户名 | 无 |
| password | 数据库密码 | 无 |
| hostport | 数据库端口号 | 无 |
| dsn | 数据库连接dsn信息 | 无 |
| params | 数据库连接参数 | 空 |
| charset | 数据库编码 | utf8 |
| prefix | 数据库的表前缀 | 无 |
| deploy | 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器) | 0 |
| rw\_separate | 数据库读写是否分离 主从式有效 | false |
| master\_num | 读写分离后 主服务器数量 | 1 |
| slave\_no | 指定从服务器序号 | 无 |
| fields\_strict | 是否严格检查字段是否存在 | true |
| auto\_timestamp | 自动写入时间戳字段 | false |
|break_reconnect|是否开启断线重连|false|
| fields_cache | 是否开启字段缓存 | false|
|schema_cache_path|字段缓存目录|无|
|trigger_sql|是否开启SQL监听(日志)|true|
| query | 指定查询对象 | think\\db\\Query |
`type`参数用于指定数据库类型,内置支持的类型包括:
| type | 数据库 |
| --- | --- |
| mysql | MySQL |
| sqlite | SqLite |
| pgsql | PostgreSQL|
| sqlsrv | SqlServer |
|mongo|MongoDb|
|oracle|Oracle|
> 除了以上内置的数据库类型之外,你可以自己扩展数据库连接类型,通常情况下,`type`配置就是你的数据库连接对象类名。
常用数据库连接参数(`params`)可以参考[PHP在线手册](http://php.net/manual/zh/pdo.constants.php)中的以`PDO::ATTR_`开头的常量。
`dsn`配置可用于一些自定义的高级连接参数,例如:
```
'dsn' => 'mysql:dbname=testdb;host=127.0.0.1'
```
如果同时定义了参数化数据库连接信息和`dsn`配置,则会优先使用`dsn`配置参数定义的数据库连接信息。
>[danger] 如果是使用`pgsql`数据库驱动的话,请先导入 `db/connector/pgsql.sql`文件到数据库执行。
- 简介
- 数据库配置
- 分布式数据库
- 查询构造器
- 查询数据
- 新增数据
- 更新数据
- 删除数据
- 链式操作
- Where
- Table
- Alias
- Field
- Strict
- Limit
- Page
- Order
- Group
- Having
- Join
- Union
- Distinct
- Lock
- Cache
- Comment
- FetchSql
- Force
- Partition
- Replace
- FailException
- Extra
- Duplicate
- Sequence
- Procedure
- View
- 聚合查询
- 分页查询
- 时间查询
- 高级查询
- 子查询
- 原生查询
- 事务操作
- 存储过程
- 查询事件
- JSON字段
- 模型
- 定义
- 新增
- 更新
- 删除
- 查询
- 查询范围
- 只读字段
- JSON字段
- 自动时间写入
- 获取器
- 修改器
- 搜索器
- 类型转换
- 模型输出
- 模型事件
- 虚拟模型
- 关联
- 一对一关联
- 一对多关联
- 远程一对多
- 远程一对一
- 多对多关联
- 多态一对多
- 多态一对一
- 关联预载入
- 关联统计
- 关联输出
- SQL监听
- 缓存机制
- 字段缓存
- 查询缓存
- 扩展
- 自定义查询类
- 自定义数据库驱动