Laravel缓存数据库查询后图片无法显示问题求助
问题解决方法
问题根源
你在Blade模板的<img>标签中存在语法错误:src属性的双引号未闭合,导致class="card-img-top"的部分被错误拼接进图片URL,URL中的空格会被编码为%20,最终出现%20class=的异常后缀。
尽管非缓存页面和缓存前浏览器可能通过容错机制解析了错误HTML,但永久缓存的模型集合在渲染时会固定这个错误,导致图片URL完全失效。
修复步骤
- 修正Blade模板的图片标签
找到index.blade.php中的图片代码,给src属性补上闭合双引号:
<img src="{{asset('storage/' .$bedroom3->SittingRoom)}}" class="card-img-top" >
注:原代码中{{asset(...)}}后直接跟 class=,缺少闭合的",这是核心问题。
- 清理现有永久缓存
由于使用了Cache::rememberForever,需手动清除缓存内容,避免旧数据继续生效。在项目根目录执行Artisan命令:
php artisan cache:forget duplex
或直接清除所有缓存:
php artisan cache:clear
- 验证结果
重新访问index页面,检查图片URL是否恢复正常,确认图片可正常显示。
额外检查(可选)
- 变量名一致性:控制器中定义的是
$duplex,但Blade模板使用$bedroom3,需确保变量名统一,避免后续渲染问题。 - 存储软链接:确认已执行
php artisan storage:link,确保storage/apartments/目录的图片能通过storage/路径访问。
内容的提问来源于stack exchange,提问作者upcoming
相关产品推荐
相关产品推荐

