- AutoMapper用法
- C# Eval在aspx页面中的用法及作用 .
- 网站排名好坏就看这三点式
- 流量提升大法
- 网站标题对SEO优化的影响
- DTO类
- CSS 怎样用css设置超链接字体的不同颜色
- C# 中(int)、int.Parse()、int.TryParse、Convert.ToInt32数据转换注意事项
- 七个流行的添加单向链接的方法
- c#中错误提示:当前上下文中不存在名称“Request”
邮箱:
手机:15383239821
ThinkPHP6.0 入门3,连接配置数据、模型定义
一、连接配置数据
1、ThinkPHP 采用内置抽象层将不同的数据库操作进行封装处理,数据抽象层基于 PDO 模式,无须针对不同的数据库编写相应的代码
2、连接配置你的数据库
3、在根目录的 config 下的 database.php 可以设置数据库连接信息
<?php
return [
// 默认使用的数据库连接配置
'default' => env('database.driver', 'mysql'),
// 自定义时间查询规则
'time_query_rule' => [],
// 自动写入时间戳字段
// true为自动识别类型 false关闭
// 字符串则明确指定时间字段类型 支持 int timestamp datetime date
'auto_timestamp' => true,
// 时间字段取出后的默认时间格式
'datetime_format' => 'Y-m-d H:i:s',
// 时间字段配置 配置格式:create_time,update_time
'datetime_field' => '',
// 数据库连接配置信息
'connections' => [
'mysql' => [
// 数据库类型
'type' => env('database.type', 'mysql'),
// 服务器地址
'hostname' => env('database.hostname', '127.0.0.1'),
// 数据库名
'database' => env('database.database', 'tp60-learning'),
// 用户名
'username' => env('database.username', 'root'),
// 密码
'password' => env('database.password', 'root'),
// 端口
'hostport' => env('database.hostport', '3306'),
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => env('database.charset', 'utf8'),
// 数据库表前缀
'prefix' => env('database.prefix', 'tp_'),
// 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
'deploy' => 0,
// 数据库读写是否分离 主从式有效
'rw_separate' => false,
// 读写分离后 主服务器数量
'master_num' => 1,
// 指定从服务器序号
'slave_no' => '',
// 是否严格检查字段是否存在
'fields_strict' => true,
// 是否需要断线重连
'break_reconnect' => false,
// 监听SQL
'trigger_sql' => env('app_debug', true),
// 开启字段缓存
'fields_cache' => false,
],
// 更多的数据库配置信息
],
];
4、由于database.php配置文件生效在部署环境,但我们是处于开发环境,本地开发,会优先采用.env 的配置信息,我们和 database 配置对应上即可,我数据库使用了表前缀。所以我在本地环境添加了:
prefix = tp_
APP_DEBUG = true
[APP]
DEFAULT_TIMEZONE = Asia/Shanghai
[DATABASE]
TYPE = mysql
HOSTNAME = 127.0.0.1
DATABASE = tp60-learning
USERNAME = root
PASSWORD = root
HOSTPORT = 3306
CHARSET = utf8
prefix = tp_
DEBUG = true
[LANG]
default_lang = zh-cn
5、创建一个用于测试数据连接的控制器: DatabaseTest.php
<?php
namespace app\controller;
use think\facade\Db;
class DatabaseTset
{
public function index(){
$user = Db::table('tp_user')->select();
return json($user);
}
}
6、访问http://tp.com/DatabaseTset可以看到tp_user表中所有信息都返回了,
7、那么如何验证现在读取的是哪一个配置文件呢,只需改变.env配置文件或删除.env配置文件信息,即可验证 database 的执行优先级,若想让系统读取database.php配置文件。只需清空.env文件中的所有配置信息即可
8、在 database.php 配置中, default 表示设置默认的数据库连接, .env优先于database.php
9、切换数据库连接:connections 配置数据库连接信息,可以是多个数据库,默认的数据库连接名称为:'mysql',再复制一组数据库链接信息:'mysq2'切换数据库 :换一下数据库名
<?php
return [
// 默认使用的数据库连接配置
'default' => env('database.driver', 'mysql'),
// 自定义时间查询规则
'time_query_rule' => [],
// 自动写入时间戳字段
// true为自动识别类型 false关闭
// 字符串则明确指定时间字段类型 支持 int timestamp datetime date
'auto_timestamp' => true,
// 时间字段取出后的默认时间格式
'datetime_format' => 'Y-m-d H:i:s',
// 时间字段配置 配置格式:create_time,update_time
'datetime_field' => '',
// 数据库连接配置信息
'connections' => [
'mysql' => [
// 数据库类型
'type' => env('database.type', 'mysql'),
// 服务器地址
'hostname' => env('database.hostname', '127.0.0.1'),
// 数据库名
'database' => env('database.database', 'tp60-learning'),
// 用户名
'username' => env('database.username', 'root'),
// 密码
'password' => env('database.password', 'root'),
// 端口
'hostport' => env('database.hostport', '3306'),
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => env('database.charset', 'utf8'),
// 数据库表前缀
'prefix' => env('database.prefix', 'tp_'),
// 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
'deploy' => 0,
// 数据库读写是否分离 主从式有效
'rw_separate' => false,
// 读写分离后 主服务器数量
'master_num' => 1,
// 指定从服务器序号
'slave_no' => '',
// 是否严格检查字段是否存在
'fields_strict' => true,
// 是否需要断线重连
'break_reconnect' => false,
// 监听SQL
'trigger_sql' => env('app_debug', true),
// 开启字段缓存
'fields_cache' => false,
],
'mysql2' => [
// 数据库类型
'type' => env('database.type', 'mysql'),
// 服务器地址
'hostname' => env('database.hostname', '127.0.0.1'),
// 数据库名
'database' => env('database.database2', 'tp60-learning2'),
// 用户名
'username' => env('database.username', 'root'),
// 密码
'password' => env('database.password', 'root'),
// 端口
'hostport' => env('database.hostport', '3306'),
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => env('database.charset', 'utf8'),
// 数据库表前缀
'prefix' => env('database.prefix', 'tp_'),
// 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
'deploy' => 0,
// 数据库读写是否分离 主从式有效
'rw_separate' => false,
// 读写分离后 主服务器数量
'master_num' => 1,
// 指定从服务器序号
'slave_no' => '',
// 是否严格检查字段是否存在
'fields_strict' => true,
// 是否需要断线重连
'break_reconnect' => false,
// 监听SQL
'trigger_sql' => env('app_debug', true),
// 开启字段缓存
'fields_cache' => false,
],
// 更多的数据库配置信息
],
];
在.env中
APP_DEBUG = true
[APP]
DEFAULT_TIMEZONE = Asia/Shanghai
[DATABASE]
TYPE = mysql
HOSTNAME = 127.0.0.1
DATABASE = tp60-learning
DATABASE2 = tp60-learning2
USERNAME = root
PASSWORD = root
HOSTPORT = 3306
CHARSET = utf8
prefix = tp_
DEBUG = true
[LANG]
default_lang = zh-cn
10、切换数据库的操作也很简单,添加一个site方法
<?php
namespace app\controller;
use think\facade\Db;
class DatabaseTset
{
public function index(){
$user = Db::table('tp_user')->select();
return json($user);
}
public function site(){
$site = Db::connect('mysql2')->table('tp_user')->select();
return json($site);
}
}
二、模型定义
1、在 app 目录下创建一个 model 目录,并创建 User.php 的模型类,User 继承模型基类,即可实现数据调用,
<?php
namespace app\model;
use Think\Model;
class User extends Model
{
}
2、我们回到控制器创建getuser方法
<?php
namespace app\controller;
use app\model\User;
use think\facade\Db;
class DatabaseTset
{
public function index(){
$user = Db::table('tp_user')->select();
return json($user);
}
public function site(){
$site = Db::connect('mysql2')->table('tp_user')->select();
return json($site);
}
public function getUser(){
$user = User::select();
return json($user);
}
}
即可实现数据调用
3、如果你还想通过模型切换数据库,只需在模型创建一个受保护的 protected $connection = 'mysql2';
<?php
namespace app\model;
use Think\Model;
class User extends Model
{
protected $connection = 'mysql2';
}
-
2014-01-24Server Error in “/ ” Application
-
2023-01-09解读微信小程序中wx.setStorageSync数据缓存存在哪里
-
2012-06-30seo人员交流的知识
-
2014-03-28js调用cs中函数的方法 和 在cs中调用js函数的方法
-
2010-12-09如何向百度和谷歌提交网站地图Sitemap?
