社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
一、配置文件定义
在 applitationdatabase.php
下配置参数
type参数
1.支持命名空间完整定义
2.不带命名空间定义,默认采用 thinkdbconnector 作为命名空间
3.自定义扩展的数据库驱动,可以配置为:
// 数据库类型
'type' => 'orgdbMysql',
表示数据库的连接器采用 orgdbMysql类作为数据库连接驱动,而不是默认的thinkdbconnectorMysql。
V5.0.6+版本开始,支持Mysql的断线重连机制,默认关闭,需要的话,是数据库配置文件中添加:
// 开启断线重连
'break_reconnect' => true,
连接参数
内置采用的参数
PDO::ATTR_CASE => PDO::CASE_NATURAL,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_ORACLE_NULLS => PDO::NULL_NATURAL,
PDO::ATTR_STRINGIFY_FETCHES => false,
PDO::ATTR_EMULATE_PREPARES => false,
在 database 中设置的 params 参数中的连接配置将会和内置的设置参数合并
例,使用长连接,并返回数据库的小写列名,可定义:
'params' => [
PDO::ATTR_PERSISTENT => true,
PDO::ATTR_CASE => PDO::CASE_LOWER,
],
注意:你可以在 params 里面配置任何 PDO 支持的连接参数。
二、方法配置
调用Db类的时候动态定义连接信息
数组方式:
Db::connect([
// 数据库类型
'type' => 'mysql',
]);
字符串方式:
Db::connect('mysql://root:1234@127.0.0.1:3306/thinkphp#utf8'); //示例
Db::connect('据库类型://用户名:密码@数据库地址:数据库端口/数据库名#字符集'); //定义格式
注意:字符串方式可能无法定义某些参数,例如前缀和连接参数。
如果在应用配置文件(applitationconfig.php)中配置了额外的数据库连接信息,例:
//数据库配置1
'db_config1' => [
// 数据库类型
'type' => 'mysql',
],
//数据库配置2
'db_config2' => 'mysql://root:1234@localhost:3306/thinkphp#utf8';
可以改成
Db::connect('db_config1');
Db::connect('db_config2');
三、模型类定义
如果在某个模型类里面定义了connection属性,则覆盖配置文件中的设置信息
通常用于某些数据表位于当前数据库连接之外的其它数据库,例如:
数组方式:
//在模型里单独设置数据库连接信息
namespace appindexmodel;
use thinkModel;
class User extends Model
{
protected $connection = [
// 数据库类型
'type' => 'mysql',
// 数据库表前缀
'prefix' => 'think_',
];
}
DSN字符串方式:
//在模型里单独设置数据库连接信息
namespace appindexmodel;
use thinkModel;
class User extends Model
{
//或者使用字符串定义
protected $connection = 'mysql://root:1234@127.0.0.1:3306/thinkphp#utf8';
}
支持直接使用数据库连接的配置名称:
//在模型里单独设置数据库连接信息
namespace appindexmodel;
use thinkModel;
class User extends Model
{
// 直接使用配置参数名
protected $connection = 'db_config1';
}
注意:ThinkPHP的数据库连接是惰性的,所以并不是在实例化的时候就连接数据库,而是在有实际的数据操作的时候才会去连接数据库。
配置参数参考
默认支持的数据库连接信息:
参数名 | 描述 | 默认值 |
---|---|---|
type | 数据库类型 | 无 |
hostname | 数据库地址 | 127.0.0.1 |
database | 数据库名称 | 无 |
username | 数据库用户名 | 无 |
password | 数据库密码 | 无 |
hostport | 数据库端口号 | 无 |
dsn | 数据库连接dsn信息 | 无 |
params | 数据库连接参数 | 空 |
charset | 数据库编码 | utf8 |
prefix | 数据库的表前缀 | 无 |
debug | 是否调试模式 | false |
deploy | 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器) | 0 |
rw_separate | 数据库读写是否分离 主从式有效 | false |
master_num | 读写分离后 主服务器数量 | 1 |
slave_no | 指定从服务器序号 | 无 |
fields_strict | 是否严格检查字段是否存在 | true |
resultset_type | 数据集返回类型 | array |
auto_timestamp | 自动写入时间戳字段 | false |
sql_explain | 是否需要进行SQL性能分析 开启调试有效 | false |
query | 指定查询对象 | thinkdbQuery |
builder | 指定数据库Builder对象 | 无 |
常用数据库连接参数(params)参考PHP在线手册中的以 PDO::ATTR_ 开头的常量。
注意:使用 pgsql 数据库驱动,请先导入 thinkphp/library/think/db/connector/pgsql.sql文件到数据库执行。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!