登录
首页 >  数据库 >  MySQL

thinkphp6使用问题记录

来源:SegmentFault

时间:2023-02-24 16:16:11 252浏览 收藏

亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《thinkphp6使用问题记录》很感兴趣。本篇文章就来给大家详细解析一下,主要介绍一下MySQL、PHP、thinkphp6,希望所有认真读完的童鞋们,都有实质性的提高。

这篇文章记录使用tp6的一些问题


迷惑我双眼的事务问题

今天在使用事务的时候,需要写入多张表,其中有一张表的 uuid写不进去,但是其他几张表写入成功,让我一度的怀疑人生。我怀疑自己使用的方式有问题,于是换了三种使用事务的方法,但是save() 始终返回的都是 true,数据库却没更新成功。沉默了几分钟后,我决定打开xdebug。

先放一下我的配置

protected $schema;                     这个模型属性没有包含我需要更新的那个字段
protected $updateTime = 'updatetime';  自动时间戳

经过我的梭哈发现了问题,放一下大概调用流程

$memberModel = new Member();
$members = $memberModel->find(1);
$members->uuid = '666';
$member->save();

以下是save() 执行的调用链
save()
updateData()       这是真正更新的方法
checkAllowFields() 这里检测字段是否允许写入
update()           最后走到这个方法,我需要修改的字段还是存在的
parseData()        数据分析功能,经过这个方法的梭哈把我需要更新字段梭哈掉了。剩下需要更新的字段 就是自动时间戳

最终生成的SQL

UPDATE ts_member SET updatetime = 1678016650
所以事务是没有问题的,更新也是没有问题的。删除$schema属性,或者在属性中加上这个字段就好了。so 为什么我不直接去看SQL日志了?sb了!!! 感觉这种应该提示一下 $schema属性中不存在 uuid 字段。这样我也不用调试代码了。
续:仔细思考了下确实是自己使用的问题,这不是orm设计的问题。

到这里,我们也就讲完了《thinkphp6使用问题记录》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于mysql的知识点!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>