ThinkPHP6项目基操(7.模型)

模型

    • 一、模型的定义及基本使用
    • 二、模型查询及其他使用
      • 1. new 模型对象
      • 2. 模型获取器

一、模型的定义及基本使用

与Db操作数据库相比,使用模型Model类更方便。
controller文件夹同级目录新建文件夹model,再新建Model类,文件名与数据库的数据表名对应,如数据表为demo,那么模型类取名为Demo.php


namespace app\model;
use think\Model;

class Demo extends Model
{
     

}

在控制器中使用模型类:

public function model1(){
     
    $result = Demo::find(2);
    dump($result);
}

浏览器输出:
ThinkPHP6项目基操(7.模型)_第1张图片
这是输出的模型对象,如果要直接输出data数据,可以使用toArray方法:

dump($result->toArray());

浏览器输出:
ThinkPHP6项目基操(7.模型)_第2张图片

二、模型查询及其他使用

1. new 模型对象

除了上面的直接使用静态方法,也可以先new一个对象再来操作,返回的也是模型对象或模型对象集合,也可以使用toArray方法来转换为数组:

public function model2(){
     
    $model = new Demo();
    $result = $model->where('id','>',2)->select();
    dump($result);
}

2. 模型获取器

模型获取器可以修改字段的值,也可以定义数据表不存在的字段,方法名称定义规则为get[字段大驼峰名]Attr,如getStatusTextAttr,数据库中有status字段,model类修改为:



namespace app\model;
use think\Model;

class Demo extends Model
{
     
    public function getStatusTextAttr($value, $data){
     
        $status = [
            0 => '待审核',
            1 => '正常',
            99 => '删除'
        ];
        return $status[$data['status']];
    }
}

控制器调用,大驼峰命名改为下划线小写方式:

public function model2(){
     
    $model = new Demo();
    $result = $model->find(2);
    dump($result->status_text); // "待审核"
    dump($result->toArray());
}

但是直接转换为数组,还是不会有status_text字段:
ThinkPHP6项目基操(7.模型)_第3张图片
如果要获取包含获取器处理的数据表中不存在的数据属性,可以使用append方法添加,数据表已存在的字段可以不用处理,会自动返回:

dump($result->append(['StatusText'])->toArray());

append的属性可以是大驼峰命名,也可以是下划线小写方式:

dump($result->append(['status_text'])->toArray());

结果:
ThinkPHP6项目基操(7.模型)_第4张图片

你可能感兴趣的:(thinkphp,thinkphp6,model,tp6,thinkphp)