TP6.0 模型修改器不执行?确认字段类型并显式调用 save 方法

星枫小哥_5741

星枫小哥_5741

2026-07-13

852人浏览

原创

tp6.0模型修改器不执行的主因是字段名与修改器方法名不匹配、赋值未触发持久化、或使用data()等绕过逻辑;须严格遵循下划线字段→驼峰setxxxattr命名,且仅在save/create/update时生效。

tp6.0 模型修改器不执行?确认字段类型并显式调用 save 方法

TP6.0 模型修改器不执行,常见于字段命名与方法名不匹配、赋值方式绕过模型逻辑、或未触发持久化动作——直接给对象属性赋值后不调用 save(),修改器永远不会运行。

确认字段命名与修改器方法名严格一致

字段是下划线命名(如 user_name),对应修改器方法名必须是驼峰式首字母大写(setUserNameAttr),不能写成 setusernameattr 或 set_user_name_attr。【TP6 不做任何自动转换,大小写和驼峰规则必须手工对齐】

打开模型类,检查方法名是否符合:set + 字段名驼峰 + Attr。例如字段 password → setPasswordAttr,字段 last_login_time → setLastLoginTimeAttr。

如果方法名写成全小写(如 setpasswordattr),框架完全无法识别,也不会报错,静默跳过。

确保修改器只在 save / create / update 时触发

修改器不是“赋值即生效”,而是仅在模型执行写入操作时才执行。以下写法 ✅ 触发:

$user = new User(); $user->password = '123'; $user->save();

User::create(['password' => '123']);

$user = User::find(1); $user->password = 'new'; $user->save();

ThinkPHP5.1企业站点快速开发-源码课件
ThinkPHP5.1企业站点快速开发-源码课件

ThinkPHP5.1企业站点快速开发

下载

以下写法 ❌ 不触发:

$user->password = '123'; // 仅赋值,无 save()

$user->data(['password' => '123'])->save(); // data() 方法绕过所有修改器逻辑

【data() 是高危操作,它直接填充原始数据数组,跳过验证、修改器、自动时间戳等全部模型层逻辑】

检查字段是否被排除在写入范围之外

第一步:确认该字段没被 protected $readonly 或 protected $disuse 包含;

第二步:检查 save() 调用时是否传了 allowField 参数,例如 $user->allowField(['id', 'name'])->save() —— 若 password 不在此白名单中,它会被彻底忽略,修改器自然不执行;

第三步:查看数据库表结构,确认字段真实存在且类型可写(比如字段设为 GENERATED ALWAYS AS,则 TP6 无法写入,save() 会静默跳过该字段)。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

thinkphp 修改器

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

2026.09.30

60

10

LLVM RISC-V参数配置教程
LLVM RISC-V参数配置教程

本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。

2026.09.30

40

14

LLVM IR中间表示入门指南
LLVM IR中间表示入门指南

本专题整理LLVM IR的核心概念,包括中间表示作用、模块结构、函数、基本块、SSA形式、类型系统和常见语法,帮助新手理解LLVM编译流程中的关键层。

2026.09.30

40

12

PDF转图片方法
PDF转图片方法

需要把 PDF 页面用于上传、预览、分享或图片归档时,PDF 转图片方法专题整理 JPG/PNG 格式选择、逐页导出、清晰度设置、批量下载和结果检查等流程,帮助用户稳定完成 PDF 图片化处理。

2026.09.30

40

26

PixTV AI视频生成与无限画布创作
PixTV AI视频生成与无限画布创作

PixTV专题整理AI视频与视觉内容创作相关功能使用教程,涵盖AI生图、视频生成、无限画布、多模型创作、素材管理、声音音乐及视频剪辑等功能,帮助用户快速掌握PixTV从创意到成片的完整制作方法。

2026.09.29

40

15

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

2026.09.23

240

15

Buffalo框架路由与请求处理实操指南
Buffalo框架路由与请求处理实操指南

本专题讲解Buffalo框架路由与请求处理机制,涵盖路由注册与分组、资源路由、Handler编写规范、Context上下文方法、参数绑定、中间件编写挂载、Session与Cookie读写、Flash消息及错误页面定制方法。

2026.09.23

160

15

Buffalo框架零基础入门教程
Buffalo框架零基础入门教程

本专题整理Buffalo框架入门内容,涵盖Go环境准备、buffalo CLI安装、新项目生成、目录结构说明、dev热加载启动、数据库连接配置与常见报错排查,帮助新手按约定优于配置的思路跑通第一个Buffalo框架应用。

2026.09.23

120

15

Conan创建软件包配方指南
Conan创建软件包配方指南

本专题介绍通过conanfile.py创建软件包的方法,讲解包名、版本、依赖和构建设置等基础信息,以及source、build、package、package_info等常用方法的作用及编写思路。

2026.09.22

80

12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程