>[info] ThinkPHP内置了抽象数据库访问层,把不同的数据库操作封装起来,我们只需要使用公共的Db类进行操作,而无需针对不同的数据库写不同的代码和底层实现,Db类会自动调用相应的数据库驱动来处理。数据库抽象访问层基于PDO方式,目前内置包含了Mysql、SqlServer、PgSQL、Sqlite等数据库的支持。
如果应用需要使用数据库,必须配置数据库连接信息,数据库的配置文件有多种定义方式。
## 配置文件
在应用配置目录或者模块配置目录(不清楚配置目录位置的话参考配置章节)下面的`database.php`中(后面统称为数据库配置文件)配置下面的数据库参数:
~~~
return [
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => '127.0.0.1',
// 数据库名
'database' => 'thinkphp',
// 数据库用户名
'username' => 'root',
// 数据库密码
'password' => '',
// 数据库连接端口
'hostport' => '',
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => 'utf8',
// 数据库表前缀
'prefix' => 'think_',
];
~~~
系统默认支持的数据库`type`包括:
type|数据库
---|---
mysql|MySQL
sqlite|SqLite
pgsql|PgSQL
sqlsrv|SqlServer
`type`参数支持命名空间完整定义,不带命名空间定义的话,默认采用`\think\db\connector`作为命名空间,如果使用应用自己扩展的数据库驱动,可以配置为:
~~~
// 数据库类型
'type' => '\org\db\Mysql',
~~~
表示数据库的连接器采用 `\org\db\Mysql`类作为数据库连接驱动,而不是默认的`\think\db\connector\Mysql`。
每个模块可以设置独立的数据库连接参数,并且相同的配置参数可以无需重复设置,例如我们可以在`admin`模块的数据库配置文件中定义:
~~~
return [
// 服务器地址
'hostname' =