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

Laravel框架下路由传递的jobseekerExamReview模型参数读取为空问题

问题排查与解决方法

根因定位

问题核心为Laravel隐式模型绑定参数名不匹配:路由定义的参数名和控制器方法接收的参数名不一致,导致Laravel无法自动查询对应数据库记录,只会返回空的jobseekerExamReview模型实例,因此所有字段均为null。

排查步骤

  • 先校验路由与控制器参数名匹配性:你的路由中占位符为{jobseekerExamReview:id},但showResults方法的入参是$examReview,二者名称不统一,是隐式绑定失效的最常见原因
  • 临时验证手动查询是否正常:把showResults的入参改为$id,手动执行查询dd(jobseekerExamReview::findOrFail($id)),如果能正常返回数据,即可100%确认是参数名匹配问题
  • 顺带检查模型可填充配置:确认jobseekerExamReview模型的$fillable数组中包含jobseeker_id、exam_id、result字段,避免创建/更新时字段被过滤(你已确认数据库有对应记录,此问题概率较低)

具体解决方法

方法1:统一参数名(推荐)

将showResults方法的入参名改为和路由占位符一致即可,修改后代码如下:

// 修改前
// public function showResults(jobseekerExamReview $examReview)
// 修改后
public function showResults(jobseekerExamReview $jobseekerExamReview)
{
    return view('exams.exam-review-results',[
        'examReview' => $jobseekerExamReview
    ])->with('reviewExamAnswers');
}

方法2:显式指定参数key

如果不想修改控制器参数名,也可以调整路由和重定向代码,显式指定参数对应关系:
首先修改路由占位符:

Route::get('/exam/reviewExam/results/{examReview:id}', [reviewExamController::class, 'showResults'])
    ->middleware(['auth','verified'])
    ->name('showResults');

重定向时显式传参:

return redirect()->route('showResults', ['examReview' => $examReview]);

额外优化

你当前代码中with('reviewExamAnswers')没有传递对应值,视图调用该变量会报错,建议调整为:

// 先查询对应答题记录
$reviewExamAnswers = jobseekerExamReviewAnswer::where('exam_review_id', $jobseekerExamReview->id)->get();
return view('exams.exam-review-results',[
    'examReview' => $jobseekerExamReview,
    'reviewExamAnswers' => $reviewExamAnswers
]);

内容的提问来源于stack exchange,提问作者ellajhonm

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 16:15:02