ThinkPHP6项目基操(7.模型)

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

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

<?php
namespace app\model;
use think\Model;

class Demo extends Model
{
    
    

}

在控制器中使用模型类:

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

浏览器输出:
在这里插入图片描述
这是输出的模型对象,如果要直接输出data数据,可以使用toArray方法:

dump($result->toArray());

浏览器输出:
在这里插入图片描述

二、模型查询及其他使用

1. new 模型对象

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

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

2. 模型获取器

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

<?php

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字段:
在这里插入图片描述
如果要获取包含获取器处理的数据表中不存在的数据属性,可以使用append方法添加,数据表已存在的字段可以不用处理,会自动返回:

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

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

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

结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/zy1281539626/article/details/110354888