thinkphp学习06-连接数据库与模型初探

新建数据库

CREATE DATABASE `tp6stu01` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_bin';

创建表和数据

DROP TABLE IF EXISTS `tp_user`;
CREATE TABLE `tp_user`  (`id` mediumint(8) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '自动编号',`username` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,`password` char(40) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,`gender` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '男',`email` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`price` decimal(8, 2) UNSIGNED NOT NULL DEFAULT 0.00,`details` text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,`uid` smallint(6) NULL DEFAULT NULL,`status` tinyint(3) NOT NULL DEFAULT 0 COMMENT '状态',`list` json NULL,`delete_time` datetime(0) NULL DEFAULT NULL,`create_time` datetime(0) NOT NULL DEFAULT '1997-01-01 01:01:01' COMMENT '创建时间',`update_time` datetime(0) NOT NULL DEFAULT '1997-01-01 01:01:01' COMMENT '修改时间',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 302 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

插入数据

INSERT INTO `tp_user` VALUES (1, '蜡笔小新', '123', '男', 'xiaoxin@163.com', 60.00, '123', 1001, -1, NULL, NULL, '2016-06-27 16:45:26', '1997-01-01 01:01:01');
INSERT INTO `tp_user` VALUES (2, '路飞', '123', '男', 'lufei@163.com', 70.00, '123', 1002, 0, NULL, NULL, '2016-06-27 16:55:56', '1997-01-01 01:01:01');
INSERT INTO `tp_user` VALUES (3, '黑崎一护', '456', '男', 'yihu@163.com', 80.00, '123', 1003, 1, NULL, NULL, '2016-07-27 17:22:16', '1997-01-01 01:01:01');
INSERT INTO `tp_user` VALUES (4, '小明', '123', '男', 'xiaoming@163.com', 90.00, '123', 1004, 2, NULL, NULL, '2016-08-27 23:50:52', '1997-01-01 01:01:01');
INSERT INTO `tp_user` VALUES (5, '孙悟饭', '123', '男', 'wufan@163.com', 100.00, '123', 1005, -1, NULL, NULL, '2016-08-28 18:02:53', '1997-01-01 01:01:01');
INSERT INTO `tp_user` VALUES (6, '孙悟天', '123', '男', 'wutian@163.com', 110.00, '123', NULL, 0, NULL, NULL, '2016-09-28 22:07:38', '1997-01-01 01:01:01');
INSERT INTO `tp_user` VALUES (7, '樱桃小丸子', '123', '女', 'yingtao@163.com', 77.00, '123', 1007, 1, NULL, NULL, '2016-10-29 10:53:58', '1997-01-01 01:01:01');
INSERT INTO `tp_user` VALUES (8, '孙悟空', '123', '男', 'wukong@163.com', 100.00, '123', 1008, 2, NULL, NULL, '2018-12-11 10:09:36', '1997-01-01 01:01:01');
INSERT INTO `tp_user` VALUES (9, '李白', '123', '男', 'UPPER(EMAIL)', 52.00, '123', 1011, 0, NULL, NULL, '2019-10-28 10:00:39', '2019-12-25 13:28:04');
INSERT INTO `tp_user` VALUES (10, '辉夜', '123', '女', 'HUIYE@163.COM', 91.00, '123', 1009, -3, NULL, NULL, '2019-09-20 22:01:42', '1997-01-01 01:01:01');
INSERT INTO `tp_user` VALUES (11, '李黑', '123', '男', 'LIBAI@163.COM', 102.00, '123', 2022, 3, NULL, NULL, '1997-01-01 01:01:01', '2020-01-16 17:19:08');

修改.env数据库配置

APP_DEBUG = true[APP]
DEFAULT_TIMEZONE = Asia/Shanghai[DATABASE]
TYPE = mysql
HOSTNAME = 10.10.90.139
DATABASE = tp6stu01
USERNAME = root
PASSWORD = password
HOSTPORT = 3306
CHARSET = utf8
DEBUG = true
PREFIX = tp_[LANG]
default_lang = zh-cn

测试环境下是可以使用的,但是到了线上建议配置到config下database.php

// 数据库类型
'type'            => env('database.type', 'mysql'),
// 服务器地址
'hostname'        => env('database.hostname', '10.10.90.139'),
// 数据库名
'database'        => env('database.database', 'tp6stu01'),
// 用户名
'username'        => env('database.username', 'root'),
// 密码
'password'        => env('database.password', 'password'),
// 端口
'hostport'        => env('database.hostport', '3306'),
// 数据库连接参数
'params'          => [],
// 数据库编码默认采用utf8
'charset'         => env('database.charset', 'utf8'),
// 数据库表前缀
'prefix'          => env('database.prefix', 'tp_'),

在这里插入图片描述
可以通过删除改变.env 的配置,或删除.env 来验证 database 的执行优先级,经过验证可知:.env>database.php

//default 表示设置默认的数据库连接,这里用的是connections下mysql的配置
'default'         => env('database.driver', 'mysql'),

新建DataTest.php

<?phpnamespace app\controller;use think\facade\Db;class DataTest
{public function index(){$user = Db::table('tp_user')->select();//也可以切换为name就不用写前缀了//$user = Db::name('user')->select();return json($user);}
}

在这里插入图片描述
connections 配置数据库连接信息,可以是多个数据库,便于切换,新建demo配置

'demo' => [// 数据库类型'type'            => env('database.type', 'mysql'),// 服务器地址'hostname'        => env('database.hostname', '10.10.90.139'),// 数据库名'database'        => env('database.database', 'tp6stu02'),// 用户名'username'        => env('database.username', 'root'),// 密码'password'        => env('database.password', 'password'),// 端口'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,
],

在这里插入图片描述
新建demo方法

public function demo()
{$demo = Db::connect('demo')->table('tp_user')->select();return json($demo);
}

在这里插入图片描述

模型初探

在 app 目录下创建一个 model 目录,并创建 User.php 的模型类

<?phpnamespace app\model;use think\Model;class User extends Model
{
}

datatest.php添加getUser方法

use app\model\User;public function getUser()
{$user = User::select();return json($user);
}

在这里插入图片描述
数据库默认链接的default下的配置就是mysql,现在想切换为demo,需要给User添加一个属性

<?phpnamespace app\model;use think\Model;class User extends Model
{protected $connection = 'demo';
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/609899.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Web APIs知识点讲解

学习目标: 能获取DOM元素并修改元素属性具备利用定时器间歇函数制作焦点图切换的能力 一.Web API 基本认知 1.作用和分类 作用: 就是使用 JS 去操作 html 和浏览器分类&#xff1a;DOM (文档对象模型)、BOM&#xff08;浏览器对象模型&#xff09; 2.DOM DOM(Document Ob…

SpringBoot-开启Admin监控服务

SpringBoot-Admin是一个用于管理和监控SpringBoot应用程序的开源项目。它提供了一个易于使用的Web界面&#xff0c;可以实时监控应用程序的健康状况、性能指标、日志和环境配置等信息。通过Actuator模块来收集和暴露应用程序的监控信息&#xff0c;使用Web Socket或者Server-Se…

C#PDF转Excel

組件 Spire.Pdf.dll, v7.8.9.0 【注意&#xff1a;版本太低的没有此功能】 在Visual Studio中找到参考&#xff0c;鼠标右键点击“引用”&#xff0c;“添加引用”&#xff0c;将本地路径debug文件夹下的dll文件添加引用至程序。 界面图&#xff1a; 1个label&#xff0c;1…

Uibot (RPA设计软件)微信群发助手机器人————课前材料二

(本博客中会有部分课程ppt截屏,如有侵权请及请及时与小北我取得联系~&#xff09; 紧接着小北的前两篇博客&#xff0c;友友们我们即将开展新课的学习~RPA 培训前期准备指南——安装Uibot(RPA设计软件&#xff09;-CSDN博客https://blog.csdn.net/Zhiyilang/article/details/1…

【QML COOK】- 005-粒子系统(ParticleSystem)

1. 编辑main.qml import QtQuick import QtQuick.ParticlesWindow {width: 800height: 800visible: truetitle: qsTr("Hello World")color: "#000000"MouseArea {id: mouseAreaanchors.fill: parentonClicked: {hahaEmitter.pulse(2000)}}ParticleSystem {…

黑马程序员JavaWeb开发|案例:tlias智能学习辅助系统(上)准备工作、部门管理

一、准备工作 1.明确需求 根据产品经理绘制的页面原型&#xff0c;对部门和员工进行相应的增删改查操作。 2.环境搭建 将使用相同配置的不同项目作为Module放入同一Project&#xff0c;以提高相同配置的复用性。 准备数据库表&#xff08;dept, emp&#xff09; 资料中包含…

2023.10.13 求逆序对,二分,求极小值

求逆序对 划分归并对数组进行调整的合理性在于 每次划分数组后&#xff0c;在前面数组的元素与后面数组元素相对次序不会颠覆&#xff0c;就是前面元素在前面划分出的数组里随便调整&#xff0c;也依然在后面数组的任意元素里的前面&#xff0c;而不可能调整到后面数组的任意…

基于模块自定义扩展字段的后端逻辑实现(一)

目录 一&#xff1a;背景介绍 二&#xff1a;实现过程 三&#xff1a;字段标准化 四&#xff1a;数据存储 五&#xff1a;数据扩展 六&#xff1a;表的设计 一&#xff1a;背景介绍 最近要做一个系统&#xff0c;里面涉及一个模块是使用拖拉拽的形式配置模块使用的字段表…

Android Studio导入项目 下载gradle很慢或连接超时,提示:Read timed out---解决方法建议收藏!

目录 前言 一、报错信息 二、解决方法 三、更多资源 前言 一般来说&#xff0c;使用Android Studio导入项目并下载gradle的过程应该是相对顺利的&#xff0c;但是有时候会遇到下载速度缓慢或连接超时的问题&#xff0c;这可能会让开发者感到头疼。这种情况通常会出现在网络…

淘宝商品详情API:电商数据的宝藏之源

在当今的电商时代&#xff0c;数据已经成为企业和商家最宝贵的资产之一。通过数据&#xff0c;商家可以更好地了解市场需求、消费者行为以及竞品情况&#xff0c;从而制定更加精准的营销策略和优化运营。而淘宝商品详情API&#xff08;taobao.item_get&#xff09;作为淘宝平台…

c++学习:异常处理机制

c语言的错误处理方式 返回值 return 0; 全局错误标志 int test() {int fd open ("1.txt",O_RDONLY);if(fd -1){//open打开文件错误会返回错误码 errnoperror()://或者用strerror可以打印出错误return -1;}return 0; } 缺点 当函数有多级嵌套的时候&#xff0c;…

Python综合数据分析_RFM用户分组模型

文章目录 1.导入数据2.月度订单数据可视化3.数据清洗4.特征工程5.构建User用户表6.求R值7.求F值8.求M值9.显示R、F、M值的分布情况10.显示手肘图辅助确定K值11.创建和训练模型12.给R值聚类13.给聚类后的层级排序14.继续给F、M值聚类&#xff0c;并排序15.为用户整体分组画像 1.…

BOM简介

1.1 常用的键盘事件 1.1.1 键盘事件 键盘事件触发条件onkeydown按键被按下时触发onkeypress按键被按下时触发onkeyup按键被松开时触发 注意&#xff1a;addEventListener事件不需要加on <script>//1. keydown 按键按下的时候触发,按任意键都触发&#xff0c;也可以识…

大创项目推荐 深度学习实现语义分割算法系统 - 机器视觉

文章目录 1 前言2 概念介绍2.1 什么是图像语义分割 3 条件随机场的深度学习模型3\. 1 多尺度特征融合 4 语义分割开发过程4.1 建立4.2 下载CamVid数据集4.3 加载CamVid图像4.4 加载CamVid像素标签图像 5 PyTorch 实现语义分割5.1 数据集准备5.2 训练基准模型5.3 损失函数5.4 归…

【Kubernetes】如何使用 kubectl 操作 cluster、node、namespace、pod

如何使用 kubectl 操作 cluster、node、namespace、pod 在列出、描述、修改或删除其他命名空间中的对象时&#xff0c;需要给 kubectl 命令传递 --namespace&#xff08;或 -n&#xff09;选项。如果不指定命名空间&#xff0c;kubectl 将在当前上下文中配置的默认命名空间中执…

整理的Binder、DMS、Handler、PMS、WMS等流程图

AMS&#xff1a; Binder&#xff1a; Handler&#xff1a; PMS&#xff1a; starActivity&#xff1a; WMS&#xff1a; 系统启动&#xff1a;

1884_emacs ivy minibuffer中上下行导航快捷键修改

全部学习汇总&#xff1a; GitHub - GreyZhang/editors_skills: Summary for some common editor skills I used. 我自己凑了一组emacs的配置使用了很长一段时间&#xff0c;很大程度上的功能在模仿spacemacs&#xff0c;但是我的配置更加轻量化&#xff0c;因此在使用的时候延…

设备树在开发板的系统中的体现

一. 简介 设备树文件中的设备节点&#xff0c;可以在开发板系统中看到。 也就说&#xff0c;开发板加载设备树文件&#xff0c;Linux内核启动系统以后&#xff0c;可以在根文件系统里看到设备树的节点信息。在/proc/device-tree/目录下存放着设备树信息。 二. 设备树在开发板…

数据结构单链表定义及例题(上)

本文简要的介绍了单链表的定义,以及单链表的头插法和尾插法的实现 文章目录 一、单链表数据结构的定义 二、头插法建立单链表(带头节点) 三、尾插法建立单链表(带头节点) 四、打印单链表 五、测试及全部代码 总结 前言 单链表是学习,以及考研无论是408还是自命题都是很重…

序列模型(4)—— Scaling Laws

本文介绍 LLM 训练过程中重要的 Scaling Laws&#xff0c;这是一个经验规律&#xff0c;指出了固定训练成本&#xff08;总计算量FLOPs&#xff09; C C C 时&#xff0c;如何调配模型规模&#xff08;参数量&#xff09; N N N 和训练 Token 数据量 D D D&#xff0c;才能实现…