正在播放:事件监听实现方式1-随波逐流派
更新时间:2年前
Laravel 事件监听
标 题 | 时 间 |
---|---|
事件监听简介 | 01:40 |
事件监听实现方式1-随波逐流派 | 08:43 |
创建事件监听的更好工作流程-全局思维 | 08:35 |
优化代码组织方式,让工作效率进一步提升 | 02:07 |

heibai 2020-05-24 18:20:42
碰到个事件奇怪的问题,下面简单描述下代码块 假设用户表2个字段分别是name age $user=User::create(['name'=>'a']); event(new CreateUser()); return UserRescouse($user); 监听器 class updateAge() $user->update(['age' => 20]) 代码流程差不多是这样。我没有继承队列,QUEUE_CONNECTION=sync 也没友动 问题接口输出的数据age是Null, 但数据表中age已经是20了。流程上来说我就是同步啊,讲道理应该输出age = 20啊,请教一下

codinget 2020-05-24 19:14:39
哈哈,按照你的设置运行肯定是同步的,很多人都会遇到这类问题,怎么想都想不明白,这里对基本功的要求还是挺高的,内存数据和数据库数据的一致性问题在这里展现的淋漓尽致。这里创建的$user在内存中对应的数据是不包含age信息的,在监控器里(添加了队列的监控器)创建的$user跟之前这个对应的可不是一个内存数据,它是一个新的,这个里边有age数据,它完成了对数据库数据的写入,但是它不会影响到最早的那个user变量,很多人可能工作5,6年也想不明白到底怎么回事,就看对内存这块的理解程度过关不过关了。它们两个是不同文件不同函数里的局部变量,局部变量的生命周期你一想也就明白了,两个平行世界。
暂无相关资源