前言
ThinkPHP支持传统的MVC(Model-View-Controller)模式,这个M就是Model,主要是进行数据库处理,增删改查由Model层处理,在controller层只需调用,然后把data数据、传过去即可!
【本篇文章基于原创,写得不好欢迎评论斧正!严禁转载!】
概念理解
比如
①你要查询张三的年龄、身高、成绩等等,可以直接 Db::name(‘table’)->where(‘name‘,’‘张三’)->find();这种是基于简单查询,如果数据库有500个人,如何进行批量查询呢?
②在实际开发中,会有注册、登录这个步骤,用户在前台填写用户名、邮箱、密码等基本信息,然后写入数据库,这个时候就不能直接写例子一的SQL语句了,不符合实际开发要求。
以上举两个例子,先了解下什么是Model?它是干什么的?
简单说下流程:
前台(view层)提供需要查询哪些人,他们的ID是什么,然后POST提交给controller层,在controller层调用Model层,把用户ID传给Model(后期商户平台可以调用Model查询用户,超级管理器可以在后台调用Model查询,相当于一个Model让多方使用)
接下来说下什么是validate,比如用户在前台注册,用户名输入一个1,这个时候是肯定不行的,因为长度太短了,容易造成重复,view层填写完,POST传值给controller层,c层调用validate,看下值是否符合标准,比如validate设置了用户名最短为6为英文数组组合,如果传过来的值不符合要求,则为validate校验不通过,不允许注册。
代码实现
使用Model
一般需要用到增删改查,可以用model提到代码复用率,比如user,注册用户、修改用户、删除用户;再比如controller层只处理增加,就用不到model了,直接用tp6的控制层sql操作。这里以User举例:
model层代码:
<?php
namespace app\index\model;
use think\Model;
class Users extends Model
{
public function UserAdd($data){
$sql=Users::create($data);
return $sql;
}
public function find($field,$val){
$res=Users::where($field,$val)->select();
return $res;
}
//更新user表某个字段
public function getUpdate($newdata){
$update = Users::update($newdata);
return $update;
}
}
注意下这里的UserAdd、find、getUpdate,这里是我们自定义的方法,可以直接在控制器层调用,只需要传入操作得数据即可,
public function register() {
if (Request()->isPost()) {//判断是否为post请求
$data = Request::param();//接收post数据
$db = new Users();//实例化model,类似于java
$res = $db->UserAdd($data);//调用上面的model层中UserAdd方法,把接收的post数据传过去即可
}
然后我们就可以判断$res这个变量,如果存在,即为插入数据库成功,否则为失败
这里有个小知识,model的起名,是和数据库的名称对应的,比如你的model名称为 User.php,在你的数据库中也要有user数据表,前缀可以忽略
暂无评论内容