定义
定义一个模型类
模型调用的常用两种方法
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()相似
聚合(模型聚合查询)