Laravel中无需@foreach循环读取recordset单条数据的正确方法
问题解决方法
你拿到的$sites是Laravel的Collection集合实例,存储的是多条数据的集合,不是单条模型实例,所以你之前的临时写法虽然可用,但确实有更简洁的规范实现:
直接调用集合的first()方法获取第一条数据,再取对应的url属性即可:
<img src="{{ $sites->first()->url }}" alt="Pic" id="bg-img" onclick="fill()" />
你之前尝试的写法失效原因
{{$site->url}}:$site只有在foreach循环的局部作用域中才会被赋值,循环外没有定义该变量,所以报错{{$sites->url}}:$sites是多条数据的集合对象,本身没有url属性,只有单条模型实例才有该属性$sites['url']:集合不是普通关联数组,顶层键是数据集的数字索引,不是字段名,就算转成数组也需要写$sites[0]['url']才能取到第一条的url,但这种写法不如first()方法规范兼容性好
兜底兼容写法
如果存在$sites为空的可能,可以用两种写法避免调用属性时报错:
- 用
optional辅助函数:
<img src="{{ optional($sites->first())->url }}" alt="Pic" id="bg-img" onclick="fill()" />
- 用PHP 7.4+支持的Null安全运算符(Laravel 8完全兼容):
<img src="{{ $sites->first()?->url }}" alt="Pic" id="bg-img" onclick="fill()" />
关于提问类型的说明
代码优化类的问题属于合理的开发实践类提问,完全符合提问规范,可以正常提问。
内容的提问来源于stack exchange,提问作者user16714187
相关产品推荐
相关产品推荐

