You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

更新数据库后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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 15:45:31