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,php,mysql)