定义
定义一个模型类
<?php
namespace app\index\model;
use think\Model;
//定义一个User模型类
class User extends Model{
//默认主键为自动识别,如果需要指定,可以设置属性
//protected $pk = 'uid'; //$pk代表主键,primary key的缩写
}
模型调用的常用两种方法
public function modelTest(){
//第一种方法:静态方法
$userModel = \app\index\model\User::get(1);
dump($userModel); //返回类型为对象类型
//第二种方法:实例化模型
$userModel = new \app\index\model\User;
$userModel->name('admin');
//dump($userModel); //返回类型为对象类型
}
官方文档中其他两种

拓展
前后端页面中的success方法和api中的success方法不同
![]()
前后端中的sucess方法 ![]()
api中的success方法 不同点:
前后端页面显示的success方法success()
/** * 操作成功跳转的快捷方法 * @access protected * @param mixed $msg 提示信息 * @param string $url 跳转的 URL 地址 * @param mixed $data 返回的数据 * @param int $wait 跳转等待时间 * @param array $header 发送的 Header 信息 * @return void * @throws HttpResponseException */ protected function success($msg = '', $url = null, $data = '', $wait = 3, array $header = []){}
api中的success()
/** * 操作成功返回的数据 * @param string $msg 提示信息 * @param mixed $data 要返回的数据 * @param int $code 错误码,默认为1 * @param string $type 输出类型 * @param array $header 发送的 Header 信息 */ protected function success($msg = '', $data = null, $code = 1, $type = null, array $header = []) { $this->result($msg, $data, $code, $type, $header); }
模型的初始化
模型同样支持初始化,与控制器的初始化不同的是,模型的初始化是重写Model
的initialize

还可以使用init()静态方法
protected static function init(){
//自定义静态初始化方法
}
与数据库操作基本相似,模型对应mvc中的m是用来操作数据库的
新增
实例化对象
public function modelTest1(){
//使用实例化方法进行新增
$userModel = new \app\index\model\User;
$userModel->username = 'zhangsan';
$userModel->save();
dump($userModel->id);//获取自增id
}
静态方法
//新增数据
public function modelTest1(){
//静态方法
$user = \app\index\model\User::create([
'username' => 'thinkphp',
'email' => 'thinkphp@qq.com'
]);
dump($user->username);
dump($user->email);
dump($user->id); // 获取自增ID
}
更新
我觉得官方文档比我描述的更仔细
更新 · ThinkPHP5.0完全开发手册 · 看云
其中需要注意的点是save()在模型处理中可用作更新也可用作保存
//save()更新数据与保存数据
public function modelTest2(){
//保存数据
$userModel = new \app\index\model\User;
$userModel->username = 'lisi';
$userModel->save();
//修改数据
//其一:查找并更新
$user = \app\index\model\User::get(2);
$user->username = 'thinkphp';
$user->email = 'thinkphp@qq.com';
$user->save();
//其二:直接更新数据
$user = new User;
// save方法第二个参数为更新条件
$user->save([
'name' => 'thinkphp',
'email' => 'thinkphp@qq.com'
],['id' => 1]);
}
删除官方文档模型删除
删除模型
$user = User::get(1);
$user->delete();
根据id删除字段
User::destroy(1);
// 支持批量删除多个数据
User::destroy('1,2,3');
// 或者
User::destroy([1,2,3]);
查询
与数据库的查询相差无异,官方文档模型查询
// 获取某个用户的积分
User::where('id',10)->value('score'); //value():单条字符串类型数据,跟find()方法类似
// 获取某个列的所有值
User::where('status',1)->column('name'); //column():返回数据集为索引数组,跟select()相似
聚合(模型聚合查询)