在ThinkPHP 6.0中创建数据模型需在app/model下建首字母大写的驼峰命名类(如User.php),继承think\Model,自动按类名映射表名(如User→user),支持手动设$table、$name、$pk及$connection。

在 ThinkPHP 6.0 中创建数据模型,核心是让一个 PHP 类与数据库中的某张表建立映射关系。整个过程轻量、约定优于配置,不需要写大量样板代码。
模型文件位置和命名规范
在 app 目录下新建 model 文件夹(与 controller 平级),然后在其中创建模型类文件。
- 文件名用首字母大写的驼峰命名法,例如:
User.php、Goods.php、UserOrder.php - 类名与文件名一致,且继承
think\Model - 默认自动匹配表名规则:类名
UserOrder→ 表名user_order(小写+下划线),前缀取自config/database.php中的prefix配置
<?php
namespace app\model;
use think\Model;
class User extends Model
{
// 若表名不是 user 或带前缀后不匹配,可显式指定
// protected $table = 'tp_user';
// protected $name = 'user'; // 仅用于指定不含前缀的表名
}自动识别与手动适配
- 如果数据库表名为
shop_goods,模型类命名为Goods即可(前缀shop_由配置自动处理) - 若表名含大写字母(如
ShopGoods),必须设置protected $table = 'ShopGoods',否则无法自动对应 - 主键默认为
id,如非标准主键(如user_id),需声明:protected $pk = 'user_id'
快速验证是否生效
在控制器中尝试实例化并查询:
$user = new \app\model\User(); $data = $user->find(1); dump($data);
或使用静态方式:
$data = \app\model\User::find(1);
支持连接多库或切换配置
可在模型内指定连接名,例如读取 demo 数据库:
protected $connection = 'demo';
前提是 config/database.php 的 connections 中已定义该连接。
立即学习“PHP免费学习笔记(深入)”;
不复杂但容易忽略。



















