更新数据库后Eloquent仍返回旧数据的问题排查与解决
数据库已更新但Eloquent展示旧数据的原因及解决方法
1. 关联对象未刷新
你更新Dokumen数据后,视图中展示的$rs->doc是JO模型预加载的关联数据,而$rs可能是更新前就加载到内存的对象,其关联的doc仍保留旧值。
解决办法:
- 更新完成后,重定向到列表页,让页面重新发起查询(最直接有效):
$dokumen->save(); return redirect()->to('admin/jo'); // 替换为你的JO列表页实际URL - 若需在当前请求内刷新关联,可调用
load()方法重新加载关联数据:// 假设JO模型与Dokumen的关联名为doc $rs->load('doc');
2. 查询缓存残留
如果JO列表查询使用了缓存,更新数据后缓存未同步清除,就会持续展示旧内容。
解决办法:
- 更新数据后,清除对应缓存:
$dokumen->save(); // 清除JO列表的缓存(示例缓存键为'jo_list',需替换为项目实际缓存键) cache()->forget('jo_list');
3. 模型实例缓存
若请求周期内之前已查询过该Dokumen实例,Eloquent会复用内存中的对象,导致更新后获取的仍是旧数据(概率较低,但可排查)。
解决办法:
- 强制从数据库重新拉取模型:
$dokumen->save(); $dokumen = Dokumen::find($dokumen->id);
4. 浏览器缓存排查
若以上方法无效,清空浏览器缓存或使用无痕模式访问页面,确认是否是浏览器缓存了旧页面内容。
内容的提问来源于stack exchange,提问作者Bintang Widiyo
相关产品推荐
相关产品推荐

