ThinkCMF5中定义一个模型: > ThinkCMF中模型要带 `Model`后缀的 ``` <?php namespace app\user\model; use think\Model; class UserModel extends Model { } ``` 模型会自动对应数据表,模型类的命名规则是除去表前缀的数据表名称,采用驼峰法命名,并且首字母大写,如: | 模型名 | 对应数据表(假设数据库的前缀定义是 cmf_) | | --- | --- | | UserModel | cmf_user | 模型默认会自动识别主键的,如果需要指定,可以设置属性 pk 属性: ``` <?php namespace app\user\model; use think\Model; class UserModel extends Model { protected $pk = 'id'; } ``` 如果你的命名规则和上面约定的不符合,那么就要在Model类中指定数据表名称,以确保能够找到对应的数据表。 ``` <?php namespace app\user\model; use think\Model; class UserModel extends Model { protected $table = 'cmf_user'; } ``` 或: ``` <?php namespace app\user\model; use think\Model; class UserModel extends Model { protected $name = 'user'; } ``` `$table`和`$name`两个属性都可以指定模型的数据表名,`$table`指定的是真实的数据表名,`$name`指定的是不带表前缀的数据表名,只要设置一个就可以了,如果两个同时设置,以`$table`设置的为准; ## 模型调用 先 use: ``` use app\user\model\UserModel; ``` 再使用: ``` // 静态调用 $user = UserModel::get(1); // 实例化模型并添加一个用户 $user = new UserModel; $user->user_nickname = '老猫666'; $user->save(); // 使用 Loader 类实例化(单例) $user = Loader::model('User'); $user->user_nickname = '老猫666'; $user->save(); // 或者使用助手函数`model` $user = model('User'); $user->user_nickname = '老猫666'; $user->save(); ```