Laravel报错:Trying to access array offset on value of type bool 求助
问题分析与解决
错误原因
- 变量名冲突:控制器方法参数
$request和查询结果变量$request重名,易引发逻辑混乱。 - 查询结果处理不当:
DriverRequest::find($request)找不到对应记录时会返回false(布尔值),视图中用@foreach遍历布尔值,直接触发Trying to access array offset on value of type bool错误。 - 视图逻辑错误:你要展示的是单个请求详情,
find方法返回的是单个模型对象(或false),并非数组/集合,根本不需要用@foreach循环。
修正方案
1. 修正控制器代码
public function show($id) { // 用findOrFail,找不到记录直接返回404,避免将布尔值传入视图 $request = DriverRequest::findOrFail($id); return view('driverDashboard.showRequestDetails', ['request' => $request]); }
- 将方法参数改为
$id,避免与查询结果变量重名; - 用
findOrFail替代find,确保无匹配记录时直接抛出404,杜绝布尔值流入视图。
2. 修正视图代码
单个记录直接访问属性即可,移除多余的循环:
<div class="body txt-c d-flex p-20 mt-20 mb-20 block-mobile"> <div> {{ $request->name }} </div> <div> {{ $request->budget }} </div> <div> {{ $request->status }} </div> </div>
- 若你的
DriverRequest返回的是数组而非模型对象,可改成{{ $request['name'] }},Laravel模型默认用对象属性访问方式; - 移除代码中多余的
</td>标签(无对应<td>标签无需闭合)。
额外提示
- 开发时可用
dd($request)打印变量,确认其类型与结构,快速排查问题; - 尽量给变量起有意义的名字,比如将
$request改为$driverRequest,提升代码可读性。
内容的提问来源于stack exchange,提问作者shimaa Ahmed
相关产品推荐
相关产品推荐

