我是靠谱客的博主 热心网友,这篇文章主要介绍ThinkPHP 8有哪些控制模型行为的字段?,现在分享给大家,希望可以做个参考。

ThinkPHP 8 有一整套**“控制模型行为”的属性**,你掌握这些基本就算把 Model 用透了

我给你按“实际开发最常用”分类讲

🧱 一、表结构 & 基础映射

1️⃣ 表名相关

protected $name = 'work';     // 表名(不带前缀)protected $table = 'tp_work'; // 完整表名(优先级更高)

2️⃣ 主键

protected $pk = 'id';

👉 如果你不是 id,必须写

3️⃣ 字段定义(你刚问的)

protected $schema = [...];

⏱️ 二、时间字段控制(你父类 TimeModel 也在用)

1️⃣ 是否自动写入时间

protected $autoWriteTimestamp = true;

2️⃣ 时间字段名

protected $createTime = 'create_time';protected $updateTime = 'update_time';

3️⃣ 时间格式

protected $dateFormat = 'Y-m-d H:i:s';

👉 默认是时间戳,可以改成字符串

🗑️ 三、软删除控制

use think\model\concern\SoftDelete;protected $deleteTime = 'delete_time';protected $defaultSoftDelete = 0;

🔐 四、字段保护(很重要)

1️⃣ 允许写入字段(白名单)

protected $field = ['name', 'price'];

2️⃣ 禁止写入字段(黑名单)

protected $disuse = ['id'];

3️⃣ 只读字段(不能修改)

protected $readonly = ['create_time'];

🔄 五、自动完成(自动写入)

protected $auto = ['status'];protected $insert = ['create_time'];protected $update = ['update_time'];

👉 类似:

protected function setStatusAttr() {    return 1;}

🔁 六、类型转换(比 $schema 更灵活)

protected $type = [    'status' => 'integer',    'price'  => 'float',    'json'   => 'array',];

👉 自动:

json_encode / json_decode

👀 七、隐藏 / 追加字段(接口很常用)

1️⃣ 隐藏字段

protected $hidden = ['password'];

2️⃣ 追加字段

protected $append = ['status_text'];

配合:

public function getStatusTextAttr($value, $data) {    return $data['status'] ? '启用' : '禁用';}

🔗 八、关联预加载

protected $with = ['category'];

👉 自动 join 查询

🚫 九、全局查询条件(高级)

protected function base($query){    $query->where('status', 1);}

👉 所有查询自动带条件

🧪 十、事件(非常强大)

protected static function init(){    self::creating(function ($model) {        $model->uuid = uniqid();    });    self::updating(function ($model) {        // 更新前    });}

🧠 十一、JSON字段支持

protected $json = ['images'];

👉 自动数组 ↔ JSON

🎯 总结一张表(你可以收藏)


分类属性
$name $table $pk
字段$schema $type
时间$autoWriteTimestamp $createTime
删除$deleteTime
安全$field $disuse $readonly
自动$auto $insert $update
输出$hidden $append
关联$with
事件init()
JSON$json

一个“实战最佳模板”:

class Work extends Model
{
    protected $name = 'work';
    protected $pk = 'id';

    protected $autoWriteTimestamp = true;
    protected $createTime = 'create_time';
    protected $updateTime = 'update_time';

    protected $type = [
        'id' => 'integer',
    ];

    protected $hidden = [];

    protected $append = [];
}


最后

以上就是热心网友最近收集整理的关于ThinkPHP 8有哪些控制模型行为的字段?的全部内容,更多相关ThinkPHP内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(8)

评论列表共有 0 条评论

立即
投稿
返回
顶部