前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >模型技术 - 数据库连接

模型技术 - 数据库连接

作者头像
PM吃瓜
发布2019-08-13 10:38:18
5540
发布2019-08-13 10:38:18
举报
文章被收录于专栏:PM吃瓜(公众号)PM吃瓜(公众号)

模型是 MVC 中的 M,可以理解为操作数据库部分操作。创建数据库连接

如果应用需要使用数据库,必须配置数据库连接信息,数据库的配置文件有多种定义方式:

一:在配置文件里配置数据库连接信息

在使用模型操作之前,我们首先创建一个数据库:thinkphp。创建一个用户表:user。添加一些数据即可。 ThinkPHP 内置了抽象数据库访问层,把不同的数据库操作封装起来。我们只需要使用公共的 Db 类进行操作,无须针对不同的数据库写不同的代码和底层实现。Db 类会自动调用相应的数据库驱动来处理。目前支持的数据库包括 Mysql(包含 mysql 和 mysqli)、 SqlServer、 PgSQL、 Sqlite、Oracle、Ibase、Mongo、PDO 等。

//全局配置定义 'DB_TYPE'=>'mysql', //数据库类型 'DB_HOST'=>'localhost', //服务器地址 'DB_NAME'=>'thinkphp', //数据库名 'DB_USER'=>'root', //用户名 'DB_PWD'=>'123456', //密码 'DB_PORT'=>3306, //端口 'DB_PREFIX'=>'think_', //数据库表前缀

PS:数据库全局配置信息除了 PDO,均可以采用上面的设置。 //PDO专用定义 'DB_TYPE'=>'pdo', //数据库类型 'DB_USER'=>'root', //用户名 'DB_PWD'=>'123456', //密码 'DB_PREFIX'=>'think_', //数据库表前缀 'DB_DSN'=>'mysql:host=localhost;dbname=thinkphp;charset=UTF8',

系统推荐使用该种方式,因为一般一个项目的数据库访问配置是相同的,该方法系统在连接数据库的时候会自动获取,无需手动连接.

二:在模型类里定义

如果在某个模型类里面定义了connection属性的话,则实例化该自定义模型的时候会采用定义的数据库连接信息,而不是配置文件中设置的默认连接信息,通常用于某些数据表位于当前数据库连接之外的其它数据库

protected $connection = array(

'dbms' => 'mysql',

'username' => 'username',

'password' => 'password',

'hostname' => 'localhost',

'hostport' => '3306',

'database' => 'dbname' );

// 或者使用下面的定义

protected $connection = "mysql://username:passwd@localhost:3306/DbName";

如果在某个模型类里面定义了connection属性,则在实例化模型对象的时候,会使用该数据库连接信息进行数据库连接, 通常用于某些数据表位于当前数据库连接之外的其它数据库.

ThinkPHP并不是在一开始就会连接数据库,而是在有数据查询操作的时候才会去连接数据库,额外的情况是,在系统第一次操作模型的时候,框架会自动连接数据库获取相关模型类的数据字段信息,并缓存下来.

三:实例化的时候指定数据库连接信息

除了在模型定义的时候指定数据库连接信息外,我们还可以在实例化的时候指定数据库连接信息,例如:如果采用的是M方法实例化模型的话,也可以支持传入不同的数据库连接信息

$User = M('User','other_','mysql://root:1234@localhost/demo#utf8');

表示实例化User模型,连接的是demo数据库的other_user表,采用的连接信息是第三个参数配置的。如果我们在项目配置文件中已经配置了DB_CONFIG2的话,也可以采用:$User = M('User','other_','DB_CONFIG2');

需要注意的是,ThinkPHP的数据库连接的惰性的,所以并不是在实例化的时候就连接数据库,而是在有实际的数据操作的时候才会去连接数据库(额外的情况是,在系统第一次实例化模型的时候,会自动连接数据库获取相关模型类对应的数据表的字段信息)。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Tech爬虫 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档