【TP5:数据库】连接数据库 - Go语言中文社区

【TP5:数据库】连接数据库


TP5手册:连接数据库

一、配置文件定义

applitationdatabase.php 下配置参数
database.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文件到数据库执行。

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_39251267/article/details/82108357
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-06-30 10:34:10
  • 阅读 ( 2215 )
  • 分类:数据库

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢