[TOC]
## 1.直接实例化
~~~
$User = new \Home\Model\UserModel();
$Info = new \Admin\Model\InfoModel();
// 带参数实例化
$New = new \Home\Model\NewModel('blog','think_',$connection);
~~~
模型类通常都是继承系统的\Think\Model类,有三个参数,都是可选的。
Model(['模型名'],['数据表前缀'],['数据库连接信息']);
### 1.1数据库连接信息参数支持三种格式
1. 字符串定义
~~~
new \Home\Model\NewModel('blog','think_','mysql://root:1234@localhost/demo');
~~~
2. 数组定义
~~~
$connection = array(
'db_type' => 'mysql',
'db_host' => '127.0.0.1',
'db_user' => 'root',
'db_pwd' => '12345',
'db_port' => 3306,
'db_name' => 'demo',
'db_charset' => 'utf8',
);
new \Home\Model\NewModel('new','think_',$connection);
~~~
3. 配置定义
~~~
//数据库配置1
'DB_CONFIG1' => array(
'db_type' => 'mysql',
'db_user' => 'root',
'db_pwd' => '1234',
'db_host' => 'localhost',
'db_port' => '3306',
'db_name' => 'thinkphp'
),
//数据库配置2
'DB_CONFIG2' => 'mysql://root:1234@localhost:3306/thinkphp',
~~~
当实例化的时候没有传入任何的数据库连接信息,系统会默认获取配置文件中的相关配置参数,如:
~~~
'DB_TYPE' => '', // 数据库类型
'DB_HOST' => '', // 服务器地址
'DB_NAME' => '', // 数据库名
'DB_USER' => '', // 用户名
'DB_PWD' => '', // 密码
'DB_PORT' => '', // 端口
'DB_PREFIX' => '', // 数据库表前缀
'DB_DSN' => '', // 数据库连接DSN 用于PDO方式
'DB_CHARSET' => 'utf8', // 数据库的编码 默认为utf8
~~~
## 2.D方法实例化
系统提供快捷方法D用于数据模型的实例化操作。
~~~
<?php
//实例化模型
$User = D('User');
// 相当于 $User = new \Home\Model\UserModel();
// 执行具体的数据操作
$User->select();
~~~
注:当`\Home\Model\UserModel`不存在的时候,D函数会尝试实例化公共模块下面的`\Common\Model\UserModel`类。
D方法的参数是模型的名称,对应关系如下:
| 参数 | 实例化的模型文件(假设当前模块为Home) |
| --- | --- |
| User | 对应的模型类文件的 \\Home\\Model\\UserModel.class.php |
| UserType | 对应的模型类文件的 \\Home\\Model\\UserTypeModel.class.php |
D方法还可以支持跨模块调用:
~~~
//实例化Admin模块的User模型
D('Admin/User');
//实例化Extend扩展命名空间下的Info模型
D('Extend://Editor/Info');
~~~
## 3.M方法实例化模型
D方法实例化模型类通常是实例化某个具体的模型类,如果只是CRUD的操作,使用M方法进行实例化,不需要加载模型类,性能会更高。
~~~
// 使用M方法实例化
$User = M('User');
// 和用法 $User = new \Think\Model('User'); 等效
// 执行其他的数据操作
$User->select();
~~~
## 4.实例化空模型类
如果你仅仅是使用原生SQL查询的话,不需要使用额外的模型类,实例化一个空模型类即可进行操作了,例如:
~~~
//实例化空模型
$Model = new Model();
//或者使用M快捷方法是等效的
$Model = M();
//进行原生的SQL查询
$Model->query('SELECT * FROM think_user WHERE status = 1');
~~~
- Golang
- 基础知识
- 变量
- CLI命令
- Golang内置类型和函数
- init函数和main函数
- go实现Windows命令
- 数组
- 切片
- select
- string操作
- Map及实现原理
- 网络编程
- 互联网协议
- socket编程
- 并发编程
- 并发介绍
- channel
- 优雅地关闭channel
- Goroutine
- Mutex
- GMP原理与调度
- Go Web
- HTTP Server
- gin框架
- 快速入门
- HTML渲染
- JSONP
- Multipart/Urlencoded绑定
- PureJSON
- gin路由
- beego框架
- Bee工具安装
- 配置模块
- Web模块
- 路由
- 数据操作
- Go操作Mysql数据库
- Go操作redis
- mongo-driver
- sqlx库
- 操作etcd
- msgpack
- 网络爬虫
- 获取页面
- 标准库
- IO操作
- 文件操作
- fmt
- 格式化输出
- flag
- log
- time
- strconv
- template
- os
- sync.Mutex
- 第三方库
- zap库
- viper
- validator参数校验
- GORM
- 基础
- CRUD接口
- INI
- 数据结构和算法
- 链表
- Golang GUI
- fyne基础
- 显示时间
- RabbitMQ-Go
- centos7 安装rabbitmq-server
- RabbitMQ介绍
- 工作队列
- 单元测试
- golang自举编译
- 了解sync.Once
- 知识碎片
- 常见问题
- 开源项目
- gRPC
- Anaconda
- 介绍、使用教程
- Python
- Python基础知识
- Python运维
- 基础语法
- Python内置工具
- 包管理工具pip
- 小爬虫笔记
- I/O操作
- requests库
- requests基本使用
- BeautifulSoup库
- BeautifulSoup基本使用
- 数据可视化
- Django
- Django起步
- PHP
- PHP数组操作
- PHP上传文件
- PHP类与对象
- PHP图片处理
- ThinkPHP框架
- 常见问题
- tp3.2.3
- 基础
- 配置
- 模型
- 模型定义
- 模型实例化
- PHP知识点
- header函数
- 前端
- CSS
- CSS权重计算
- Javascript
- JS基础知识
- 监听事件
- 字符串操作
- 数组操作
- 输入输出
- 定时器
- 样式操作
- 获取url参数
- Vue.js
- Vue.js介绍
- Vue.js基础
- Vue指令
- v-model
- v-for
- 指令修饰符
- Q&A
- 命令
- Vue3
- node.js
- node.js基础
- npm遇到的问题
- 相关工具安装
- nvm使用教程
- 工程化webpack
- Linux
- Linux基础
- 符号链接
- Shell
- 脚本执行中的问题
- tcpdump
- Docker
- Docker的基础概念与操作
- Docker 安装
- 容器技术原理
- Docker核心概念
- Docker基本操作
- 镜像相关操作
- 容器相关操作
- 镜像加速器
- Dockerfile
- Docker所遇问题
- k8s
- 安装工具
- kubectl
- Git
- gitlab
- gitlab备份与恢复
- gitlab基本使用
- git使用
- git常用命令
- git提交问题
- 数据库
- MySQL
- MySQL介绍
- mariadb安装
- 主主复制
- 数据库问题集结
- 开启binlog
- Redis
- Redis简单使用
- Redis常见问题
- Redis集群
- Redis Cluster概述
- 数据分布
- 搭建集群
- MongoDB
- miniprogram
- 小程序基本知识
- app.json文件详解
- 小程序学习过程中的问题
- 服务器
- CentOS
- 配置阿里云的yum源和epel源
- centos7 实现NFS文件共享
- rsync
- centos7 源码编译rsync
- rsync实现文件同步
- 添加删除swap分区
- 清除buff/cache
- 配置ntp时间同步
- centos7安装pip
- centos7虚拟机启动报xfs错误
- centos7常用命令
- centos7安装mysql
- centos7安装python3.x
- centos7升级gcc、g++
- centos7安装nginx
- centos7部署Nexus
- centos7离线安装python3
- centos7.6编译mariadb10.5.22
- CentOS8
- 银河麒麟V4
- nginx编译
- 银河麒麟V10_x86
- 安装VNC
- 单用户模式
- UOS
- 配置本地apt源
- apt安装vnc-server
- UOS单用户模式
- UOS创建自启动脚本
- 源码编译
- oniguruma编译
- Proxmox VE
- PVE基本使用
- PVE故障
- KVM
- KVM相关命令
- 银河麒麟V10_x86安装kvm
- UOS_arm64安装kvm
- yum、rpm、apt
- dpkg、apt-get、yum和rpm的区别
- rpm打包
- yum相关问题
- 内建银河麒麟的apt源
- 其他软件
- JuiceFS
- nacos
- 常见命令
- 硬盘分区
- Linux常见问题
- 其他
- Cloc代码统计工具
- onlyoffice 在线文档编辑
- onlyoffice添加中文字体
- 遇到的问题
- 网络通信协议
- 部署相关记录
- Vmware workstation虚拟机迁移到PVE指南
- 小操作